【问题标题】:Calling existing make command in cmake file在 cmake 文件中调用现有的 make 命令
【发布时间】:2017-11-14 01:50:05
【问题描述】:

我有一个包含多个子目录的大型项目。在父目录中,我有一个 CMakeLists.txt 文件,它调用同一父目录中其他 cmake 文件中定义的函数。我在包含一些目标"run" 的子目录之一中有一个自定义Makefile。当我从父目录调用cmake 时,我希望执行位于子目录makefile 中的"run" 目标。我该怎么做?


我知道有些人建议使用add_custom_targetadd_custom_command,但我仍然对如何应用这些命令来完成这项任务感到困惑。

【问题讨论】:

    标签: makefile cmake


    【解决方案1】:

    如果您知道 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 选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-29
      • 2020-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多