我有一個命令行工具,應該在CMake創建我的.sln文件後運行。有沒有辦法使用CMake來做到這一點?在CMake生成步驟後運行命令
在CMakeLists.txt末尾使用execute_process(COMMAND ..)並沒有幫助,因爲這是在配置步驟後執行的,但是.sln文件是在生成步驟中創建的。
非常感謝!
我有一個命令行工具,應該在CMake創建我的.sln文件後運行。有沒有辦法使用CMake來做到這一點?在CMake生成步驟後運行命令
在CMakeLists.txt末尾使用execute_process(COMMAND ..)並沒有幫助,因爲這是在配置步驟後執行的,但是.sln文件是在生成步驟中創建的。
非常感謝!
是,add_custom_command與add_custom_target配對得到這個覆蓋
舉一個例子來看看我的回答另一個問題
一個相當可怕的方法是通過從cmake調用cmake並在父腳本的出路上執行後生成的東西。
option(RECURSIVE_GENERATE "Recursive call to cmake" OFF)
if(NOT RECURSIVE_GENERATE)
message(STATUS "Recursive generate started")
execute_process(COMMAND ${CMAKE_COMMAND}
-G "${CMAKE_GENERATOR}"
-T "${CMAKE_GENERATOR_TOOLSET}"
-A "${CMAKE_GENERATOR_PLATFORM}"
-DRECURSIVE_GENERATE:BOOL=ON
${CMAKE_SOURCE_DIR})
message(STATUS "Recursive generate done")
# your post-generate steps here
# exit without doing anything else, since it already happened
return()
endif()
# The rest of the script is only processed by the executed cmake, as it
# sees RECURSIVE_GENERATE true
# all your normal configuration, targets, etc go here
,如果你需要調用cmake的使用像「-DTHIS -DTHAT」命令行選項的各種組合這種方法不能很好地工作,但可能是可以接受的許多項目。它可以很好地處理持久緩存的變量,包括最初生成時的所有cmake編譯器檢測。
從以下鏈接看來,在CMake生成.sln文件後,似乎沒有這樣的命令來指定執行。
的替代方案是如在上述鏈接中的一個所描述的寫包裝腳本。
cmake ..
DoWhatYouWant.exe
也許我不明白你的意思,但據我所知,用這些命令只能在構建過程中運行一個工具。 (我正在使用Visual Studio,並且該過程如下工作:我點擊「Build」 - >如果有任何更改,CMake會生成新的.sln文件 - > VS宏詢問我是否要重新加載解決方案 - >我按是 - >構建解決方案開始 - >自定義目標被執行,如果現在我的命令修改瞭解決方案,我必須重新加載我想避免的,我寧願在CMake的生成階段修改解決方案文件。 – Philipp 2011-08-19 09:48:12