2016-12-01 2 views
0

Я создаю файл 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 
) 

ответ

1

Конечно, просто позвоните

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

Смотрите документацию для CMAKE_GENERATOR переменная.

+0

Это помогает. Однако если кто-то использует -T или -A, мне нужно будет обрабатывать каждый случай или есть что-то, что позволит мне передать все в cmake? – Stewart

+1

Соответствующими переменными являются 'CMAKE_GENERATOR_TOOLSET' и' CMAKE_GENERATOR_PLATFORM'. – arrowd

+0

Этот ответ помогает в случаях -T и -A, но как насчет случаев, которые я еще не рассматривал? Например, что, если кто-то передает пользовательский 'CMAKE_INSTALL_PREFIX'? Я уверен, что у меня много возможностей. Есть ли общий способ передать все? – Stewart

Смежные вопросы