重新扫描CMake并传递参数
问题描述:
我正在制作一个带有外部项目的CMAKE文件。我在这里的例子如下: CMake ExternalProject_Add() and FindPackage()重新扫描CMake并传递参数
但是,我有一个问题。当我打电话给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
)
答
当然,只需拨打
add_custom_target(Rescan ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} ${CMAKE_SOURCE_DIR} DEPENDS Eigen3)
为CMAKE_GENERATOR见文档变量。
这有助于感谢。但是,如果有人使用-T或-A,我是否需要处理每个案例,或者是否有什么可以让我将所有内容传递给cmake? – Stewart
各自的变量是'CMAKE_GENERATOR_TOOLSET'和'CMAKE_GENERATOR_PLATFORM'。 – arrowd
这个答案有助于-T和-A情况,但是我还没有考虑过的情况呢?例如,如果某人传递了一个自定义的'CMAKE_INSTALL_PREFIX'会怎么样?我相信我错过了很多可能性。有没有一种通用的方式来通过一切? – Stewart