我试图让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")
然而,它并没有构建任何东西。我做错了什么?
同样,在这里问一下:第三个命令,移动到二进制文件夹中,是否应该包括?
谢谢!
WORKING_DIRECTORY
参数来代替那些cd
命令呢?类似于execute_process(COMMAND make WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/dependencies/library)
的方式。我猜测,execute_process()
调用并不共享相同的环境变量。 此外,如果我是您,我会查看add_custom_target()
和add_custom_command()
这两个函数,来完成这种任务。 - Kamiccoloexecute_process
不共享状态的细节几乎肯定是准确的。第一个命令中的cd
很可能只为该进程更改目录,而不会影响其他进程。 - Etan Reisner