我有一个包含多个子目录的大型项目.在父目录中,我有一个CMakeLists.txt文件,该文件调用同一父目录中其他cmake文件中定义的函数.我在其中一个包含一些目标"run"的子目录中有一个自定义Makefile.当我从父目录调用cmake时,我希望执行位于子目录makefile中的"run"目标.我该怎么做?我知道有些人建议使用add_custom_target和add_custom_command,但我仍然对如何应用这些命令来完成此任务感到困惑.
Tsy*_*rev 20
如果您知道,子文件中的Makefile生成了哪些文件,并且想要依赖这些文件,请使用add_custom_command:
add_custom_command(OUTPUT <output-file>
COMMAND make run
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/<subdir>
)
Run Code Online (Sandbox Code Playgroud)
这假定您CMakeLists.txt有一个目标,它取决于或使用给定的文件.
否则,如果您不关心Makefile生成哪些文件,请使用add_custom_target:
add_custom_target(<target_name> COMMAND make run
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/<subdir>
)
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,WORKING_DIRECTORY都指定了当前执行命令的目录.
如果您希望默认执行目标(在第二种情况下),请在COMMAND之前添加ALL选项.