gpt4 book ai didi

bash - 通过 CMake 运行 bash 命令

转载 作者:行者123 更新时间:2023-11-29 08:47:06 27 4
gpt4 key购买 nike

我试图让 CMake 运行三个 bash 命令或一个 bash 脚本。但是,我似乎无法让它工作。

bash 命令是:

    cd ${CMAKE_SOURCE_DIR}/dependencies/library
make
cd ${CMAKE_BINARY_DIR}

本质上,我希望 CMake 在该目录中构建库(如果它尚不存在)。

这是我试过的 CMake 代码:

if(NOT "${CMAKE_SOURCE_DIR}/dependencies/library/lib.o")
execute_process(COMMAND cd ${CMAKE_SOURCE_DIR}/dependencies/library)
execute_process(COMMAND make)
execute_process(COMMAND cd ${CMAKE_BINARY_DIR})
endif(NOT "${CMAKE_SOURCE_DIR}/dependencies/library/lib.o")

但是,它没有构建任何东西。我究竟做错了什么?

此外,当我在这里问这个问题时:是否应该包括第三个命令,即移动到二进制文件夹?

谢谢!

最佳答案

execute_process() 在配置期间执行。但是您希望它在构建时运行,因此 add_custom_command() add_custom_target() 正是您要找的。

在这种特殊情况下,您想要生成一个输出文件,所以您应该使用 add_custom_command() (两者本质上相同,但 command 生成一个或多个输出文件,而 target 不生成。

此 cmake 片段应如下所示:

add_custom_command(
OUTPUT ${CMAKE_SOURCE_DIR}/dependencies/library/lib.o
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/dependencies/library
COMMAND make
)

然后您必须将输出文件添加到另一个目标中作为依赖项,一切都应该(希望)按预期工作。

您还可以添加 DEPENDSadd_custom_command() 的陈述调用以重建目标文件以防某些输入源发生更改。

关于bash - 通过 CMake 运行 bash 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25687890/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com