Makefile 调用cmake文件中的现有make命令

Makefile 调用cmake文件中的现有make命令,makefile,cmake,Makefile,Cmake,我有一个包含多个子目录的大型项目。在父目录中,我有一个CMakeLists.txt文件,它调用同一父目录中其他cmake文件中定义的函数。我在其中一个子目录中有一个自定义Makefile,其中包含一些目标“run”。当我从父目录调用cmake时,我希望执行位于子目录makefile中的“run”目标。我该怎么做?我知道有些人建议使用add_custom_target和add_custom_命令,但我仍然不知道如何应用这些命令来完成这项任务。如果您知道,哪些文件是由子目录中的Makefile生成的

我有一个包含多个子目录的大型项目。在父目录中,我有一个CMakeLists.txt文件,它调用同一父目录中其他cmake文件中定义的函数。我在其中一个子目录中有一个自定义Makefile,其中包含一些目标“run”。当我从父目录调用cmake时,我希望执行位于子目录makefile中的“run”目标。我该怎么做?我知道有些人建议使用add_custom_target和add_custom_命令,但我仍然不知道如何应用这些命令来完成这项任务。

如果您知道,哪些文件是由子目录中的Makefile生成的,并且希望依赖于这些文件,请使用
add_custom_命令

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

在这两种情况下,WORKING_DIRECTORY指定执行命令时应为当前的目录

如果希望在默认情况下执行目标(在第二种情况下),请在命令之前添加所有选项

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