2017-06-12 73 views
1

我有一個包含多個子目錄的大項目。在父目錄中,我有一個CMakeLists.txt文件,它調用在同一父目錄中的其他cmake文件中定義的函數。我在其中一個包含一些目標「運行」的子目錄中有一個自定義的Makefile。當我從父目錄調用cmake時,我想要執行位於子目錄makefile中的「運行」目標。我應該怎麼做?我知道有些人建議使用add_custom_target和add_custom_command,但我仍然對如何應用這些命令來完成此任務感到困惑。在cmake文件中調用現有的make命令

回答

3

如果你知道,這文件(S)是由Makefile文件製作子目錄,並希望依靠這些文件,使用add_custom_command

add_custom_command(OUTPUT <output-file> 
        COMMAND make run 
        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/<subdir> 
) 

這裏假設你的CMakeLists.txt有一個目標,這取決於或使用給定的文件。

否則,如果你不關心哪個文件是由Makefile的生產,使用add_custom_target

add_custom_target(<target_name> COMMAND make run 
        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/<subdir> 
) 

在這兩種情況下working_directory的指明應當被當前對於執行命令的目錄。

如果你想目標(在第二種情況下),在默認情況下被執行,則COMMAND前加ALL選項。