2016-07-26 34 views
0

Meine Projektstruktur:Wie verweise ich die ausführbare Datei von einem anderen Verzeichnis in CMake?

/external-source-generating-tool 
/external-source-generating-tool/CMakeLists.txt 
/external-source-generating-tool/*.cpp 
/src 
/src/CMakeLists.txt 
/src/*.cpp 
/CMakeLists.txt 

CMakeLists.txt:

add_subdirectory(external-source-generating-tool) 
add_subdirectory(src) 

/src/CMakeLists.txt:

add_custom_command(OUTPUT generated-source.cpp 
    COMMAND external-source-generating-tool -o generated-source.cpp 
    MAIN_DEPENDENCY external-source-generating-tool 
    COMMENT "Generating...") 

add_executable(my-app source1.cpp generated-source.cpp) 

Die Probleme ist /src/CMakeLists.txt nicht external-source-generating-tool finden:

Error:Cannot find source file:
external-source-generating-tool
Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp .hxx .in .txx

Wie richtig anrufen external-source-generating-tool von /src/CMakeLists.txt?

+1

Laut der Fehlermeldung scheint es, dass Sie versuchen, 'externe-Source-Generating-Tool' als ** Quelldatei ** für' add_executable() 'hinzuzufügen. Es hat nichts gemein mit der Unfähigkeit, "externe-quellengenerierende-tool" * ausführbare * für die Ausführung zu finden. – Tsyvarev

+0

Wirklich, es war sichtbar. Das Problem war mit dem Parameter 'MAIN_DEPENDENCY external-source-tool '. Ich habe es entfernt und jetzt funktioniert alles gut. –

Antwort

0

Das Problem war mit dem MAIN_DEPENDENCY external-source-generating-tool Parameter von add_custom_command. Ich ersetzte es durch DEPENDS external-source-generating-tool:

add_custom_command(OUTPUT generated-source.cpp 
    COMMAND external-source-generating-tool -o generated-source.cpp 
    DEPENDS external-source-generating-tool 
    COMMENT "Generating...") 

Und jetzt alles funktioniert gut.