Es kann mühsam sein, ExternalProjects aufzurufen, wenn ihre Installationsziele durcheinander geraten sind. Daher möchte man vielleicht einmal externeProjekte erstellen und installieren, bevor Hauptprojektdateien für ein bestimmtes Projekt erzeugt werden. Ist es möglich mit CMake und wie es geht?Wie baue ich CMake ExternalProject während der Konfiguration des Hauptfensters?
Antwort
können Sie verwenden cmake
Anruf innerhalb execute_process
für konfigurieren und bauen CMake Projekt, das ExternalProject enthält:
other_project/CMakeLists.txt:
project(other_project)
include(ExternalProject)
ExternalProject_Add(<project_name> <options...>)
CMakeLists.txt:
execute_process(
COMMAND ${CMAKE_COMMAND} --build . ${CMAKE_SOURCE_DIR}/other_project
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/other_project
)
So ein wa y other_project werden konfiguriert und gebaut (wegen --build
Option) im Verzeichnis ${CMAKE_BINARY_DIR}/other_project
. Wenn Sie die Installation unter ExternalProject_Add
nicht deaktivieren, wird dies beim Erstellen der other_project ausgeführt.
Normalerweise möchten Sie einige Optionen zu ExternalProject, wie SOURCE_DIR
, , INSTALL_DIR
, von Variablen im Hauptprojekt abgeleitet werden. Sie haben zwei Möglichkeiten für das achive:
erstellen CMakeLists.txt für other_project mit
configure_file
, vom Hauptprojekt genannt (vorexecute_process
Befehl).Übergeben Sie Variablen aus dem Hauptprojekt als
-D
Parameter an${CMAKE_COMMAND}
.