【问题标题】:Rescanning CMake and passing parameters重新扫描 CMake 并传递参数
【发布时间】:2017-04-15 20:19:03
【问题描述】:

我正在使用外部项目制作 CMAKE 文件。我在这里按照示例进行操作: CMake ExternalProject_Add() and FindPackage()

但是,我有一个问题。当我调用 cmake 时,我使用cmake -G "MinGW Makefiles" ..。不幸的是, -G 参数似乎没有被传递到重新扫描目标中。如何将适用的 Cmake 命令中继到任何重新扫描?

我认为这是我需要改变的地方

 add_custom_target(Rescan ${CMAKE_COMMAND} ${CMAKE_SOURCE_DIR} DEPENDS Eigen3)

这里是 CMakeLists.txt:

find_package( Dep1 )

include (ExternalProject)
ExternalProject_Add (
                   Dep1
                   SVN_REPOSITORY https://svn.company.nl/svn/Dep1-trunk
                   SVN_REVISION -rHEAD
                   TIMEOUT 10
)

if (NOT Dep1_FOUND )
  add_custom_target(Rescan ${CMAKE_COMMAND} ${CMAKE_SOURCE_DIR} DEPENDS Dep1)
else (NOT Dep1_FOUND)
  add_custom_target(Rescan)
endif (NOT Dep1_FOUND)

#build app
add_executable( Testapp main.cpp )
add_dependencies( Testapp Rescan )

if (${Dep1_FOUND})
  target_include_directories( Testapp PUBLIC ${Dep1_INCLUDE_DIR} )
  target_link_libraries( Testapp ${Dep1_LIBRARY} )
endif (${Dep1_FOUND})

#Install package
install(TARGETS Testapp EXPORT ${PROJECT_NAME}Targets
  RUNTIME DESTINATION bin
)

【问题讨论】:

    标签: cmake dependency-management


    【解决方案1】:

    没问题,打个电话

    add_custom_target(Rescan ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} ${CMAKE_SOURCE_DIR} DEPENDS Eigen3)
    

    请参阅CMAKE_GENERATOR 变量的文档。

    【讨论】:

    • 这有帮助,谢谢。但是,如果有人使用 -T 或 -A 我需要处理每种情况还是有什么东西可以让我将所有内容都传递给 cmake?
    • 各自的变量是CMAKE_GENERATOR_TOOLSETCMAKE_GENERATOR_PLATFORM
    • 这个答案对 -T 和 -A 案例有帮助,但是我还没有考虑过的案例呢?例如,如果有人通过自定义CMAKE_INSTALL_PREFIX 怎么办?我确定我错过了很多可能性。是否有通用的方法来传递所有内容?
    • @Stewart 通常,CMake 在重新配置期间从 CMakeCache.txt 中获取所有缓存变量。但你似乎有另一个问题。您想将构建目录中的所有 CMake 变量传递到另一个单独的构建目录,对吗?
    • 由于我需要使用-G "MinGW Makefiles" 构建,我相信其他人有其他怪癖或偏好。如果 CMake 获取所有缓存变量,那就太好了,但我注意到如果没有将 -G ${CMAKE_GENERATOR} 添加到我的 ${CMAKE_COMMAND},我的构建失败了。我的问题已解决(因此为已解决状态),但是为了防止将来出现其他问题,我正在探索如何以最通用的方式解决此问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    • 2020-12-03
    • 1970-01-01
    • 2021-05-25
    相关资源
    最近更新 更多