2013-02-22 64 views
4

我想在CMake安裝完成後運行一個腳本。我發現this thread on SO,但它仍然不起作用,因爲我的腳本依賴於安裝的目標。在CMake中,如何在目標安裝後運行腳本?

基本上我的腳本是在安裝目標之前運行的。這是因爲CMake似乎把安裝子目錄目標的代碼放在cmake_install.cmake的末尾

下面是一個說明問題的例子;子目錄CMake的文件:

# src/CMakeLists.txt 
add_executable(foo main.cpp) 
install(TARGETS foo DESTINATION bin) 

頂級CMake的文件:

# Top-level CMakeLists.txt 
cmake_minimum_required(VERSION 2.8) 
add_subdirectory(src) 
install(CODE "execute_process(COMMAND ls ${CMAKE_INSTALL_PREFIX}/bin/foo)") 

運行make install產量:

-- Install configuration: "debug" 
ls: cannot access /tmp/dummy/bin/foo: No such file or directory 
-- Installing: /tmp/dummy/bin/foo 

任何想法,我怎麼能解決此問題?謝謝!

回答

3

如果您發現cmake將子目錄安裝目標放置在cmake_install的末尾,您可以添加另一個包含cmake的子目錄,其中包含您需要在所有其他目標之後執行的操作。

+0

我最終終於使用了這個解決方案。謝謝你。 – piwi 2014-05-12 12:23:58

+0

這可以工作,但是需要更多地將生成步驟中的列表傳遞到稍後執行的安裝步驟。 – rickfoosusa 2015-02-24 23:10:52