2015-03-02 294 views
2

我第一次使用cmake,我只是沒有運氣找到幫助我弄清楚我做錯了什麼的例子。這個功能看起來很基本,但是我迄今爲止所嘗試的任何東西都沒有給我任何有意義的輸出或錯誤。運行一個python腳本作爲cmake構建的一部分

我對文檔有一個PRELOAD命令,只要文檔已經被創建,這個工作正常。

set(variable_name 
     PRELOAD ${_source_directory}/Documents/output.txt AS output.txt 
) 

但我想要的文檔生成(這是通過python腳本來實現),是CMake的構建過程的一部分。我想運行的命令是

python_script.py ${_source_directory}/Documents/input.txt 
       ${_source_directory}/Documents/output.txt 

我希望在PRELOAD語句執行之前運行。

這裏是什麼,我已經試過

add_custom_command(
    OUTPUT ${_source_directory}/Documents/output.txt 
    COMMAND python_script.py ${_source_directory}/Documents/input.txt 
          ${_source_directory}/Documents/output.txt 
) 
set(variable_name 
     PRELOAD ${_source_directory}/Documents/output.txt AS output.txt 
) 

的榜樣,但這給了我同樣的錯誤,好像add_custom_command甚至沒有出現(「沒有規則,使目標$ {_ source_directory中} /文檔/ output.txt的「)。

+1

我不熟悉這個'set(... PRELOAD ...)'語法。事實上,我找不到[在文檔中](http://www.cmake.org/cmake/help/v3.0/command/set.html)。它應該做什麼? – remram 2015-03-02 20:14:59

+0

嗯,我想在這裏與PRELOAD,它只是添加文件名作爲variable_name中包含的字符串的一部分。稍後,該變量被解析並且每個文件名被用來讀取實際的文件。我只需要python腳本來運行並在稍後使用它之前實際生成該文件。 – user984792 2015-03-02 22:15:08

+0

'cmake --version'的輸出是什麼? – kdopen 2015-03-04 19:30:57

回答

0

你確實/理解錯了。正如它在評論中提到的set()PRELOAD沒有任何關係。

正確的方法是使用add_custom_target()這將產生所需的目錄要建立和將使用output.txt目標的output.txt,然後add_dependencies()

相關問題