7
我試圖讓CMake運行三個bash命令或一個bash腳本。但是,我似乎無法讓它工作。通過CMake運行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()'](http://www.cmake.org/cmake/help/v3.0/command/add_custom_target.html?highlight=add_custom_target)和['add_custom_command()'](http://www.cmake.org/cmake/help/v3.0/command/add_custom_command.html?highlight=add_custom_command)這樣的事情。 – Kamiccolo 2014-09-05 14:23:50
我不能評論@ Kamiccolo說的大部分內容,但我可以說我認爲'execute_process'不共享狀態的細節幾乎肯定是準確的。 *令人難以置信的是*第一個命令中的'cd'可能僅僅爲該進程更改目錄,而不是其他任何目錄。 – 2014-09-05 14:26:21
如果您打算構建第三方庫,則最好使用[ExternalProject](http://www.cmake.org/cmake/help/v3.0/module/ExternalProject.html)模塊。 – sakra 2014-09-05 18:47:28