Я создаю файл 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
)
Это помогает. Однако если кто-то использует -T или -A, мне нужно будет обрабатывать каждый случай или есть что-то, что позволит мне передать все в cmake? – Stewart
Соответствующими переменными являются 'CMAKE_GENERATOR_TOOLSET' и' CMAKE_GENERATOR_PLATFORM'. – arrowd
Этот ответ помогает в случаях -T и -A, но как насчет случаев, которые я еще не рассматривал? Например, что, если кто-то передает пользовательский 'CMAKE_INSTALL_PREFIX'? Я уверен, что у меня много возможностей. Есть ли общий способ передать все? – Stewart