2013-08-19 28 views
0

我在寫劇本的CMake應該做到以下幾點:瞭解CMake的階段

  1. 使靜態庫。
  2. 使用python腳本處理上述庫文件。

請注意,(2)應在之後完成靜態庫的構建。據我所知,add_custom_command將無法​​正常工作,因爲它正在配置過程中處理。我試圖用execute_process,像這樣:

EXECUTE_PROCESS(
    COMMAND ${SCRIPT} --source /my/path/myLib.a --dest ${TEMP_DIR} 
    WORKING_DIRECTORY ${TEMP_DIR} 
) 

它也似乎並不爲2個原因有:1)它不承認的變量; 2)即使我把硬編碼的路徑,它會被調用得太早。

那麼什麼是正確的是完成上述順序?

回答

0

不,反之亦然。 execute_process生成期間,add_custom_command編譯期間。只需將它添加到目標(POST_BUILD - 目標是構建):

add_custom_command(
    TARGET 
    ${target} 
    POST_BUILD 
    COMMAND 
    ${cmd} # your python script 
    WORKING_DIRECTORY 
    ${YOUR_DIR} # command working directory 
    COMMENT 
    "your comments" # you will see this message, when python script invoke 
) 
+0

啊哈,太棒了!因此,如果我的目標被定義爲'add_library(MyLib STATIC $ {MYLIB_SOURCES})',那麼我可以將所有附加命令綁定到'MyLib',就像這樣:'add_custom_target(TARGET MyLib POST_BUILD .....) , 對? –

+0

順便說一下,在構建階段,是否存在「FILE(GLOB ....)」的「構建時間」變體,用一系列文件填充變量? –

+0

不,我沒有列出源文件,我連接了靜態庫。這就是:我建立我的靜態庫,從它提取目標文件和從其他3d方庫使用python腳本('AR'不會工作,因爲重複* .o名稱),然後'ar' /'ranlib'一切 - 製作一個大靜態庫。這樣一個簡單的任務,可以在Windows下以1行完成...... –