2016-12-01 2 views
0

Ich mache eine CMAKE-Datei mit einem externen Projekt. Ich folge dem Beispiel hier: CMake ExternalProject_Add() and FindPackage()CMake erneut scannen und Parameter übergeben

Allerdings habe ich ein Problem. Wenn ich cmake anrufe, verwende ich cmake -G "MinGW Makefiles" ... Leider scheint der Parameter -G nicht in das Rescan-Ziel übernommen zu werden. Wie kann ich anwendbare Cmake-Befehle an jeden Rescan weiterleiten?

Ich denke, das ist die Linie I

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

Hier wird die CMakeLists.txt ändern müssen:

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 
) 

Antwort

1

sicher, rufen Sie einfach

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

Siehe Dokumentation für CMAKE_GENERATOR Variable.

+0

Dies hilft dank. Wenn jemand aber -T oder -A benutzt, müsste ich jeden Fall behandeln oder gibt es etwas, das mich alles in cmake weitergibt? – Stewart

+1

Die entsprechenden Variablen sind 'CMAKE_GENERATOR_TOOLSET' und' CMAKE_GENERATOR_PLATFORM'. – arrowd

+0

Diese Antwort hilft bei den Fällen -T und -A, aber was ist mit Fällen, die ich noch nicht berücksichtigt habe? Was passiert zum Beispiel, wenn jemand ein benutzerdefiniertes 'CMAKE_INSTALL_PREFIX' übergibt? Ich bin mir sicher, dass mir viele Möglichkeiten fehlen. Gibt es einen allgemeinen Weg, um alles zu übergeben? – Stewart