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
)
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
Die entsprechenden Variablen sind 'CMAKE_GENERATOR_TOOLSET' und' CMAKE_GENERATOR_PLATFORM'. – arrowd
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