是否可以在python腳本中運行cmake命令?我想設置我通過python代碼手動安裝和編譯的boost庫。我希望通過python腳本發生類似set(BOOST_INCLUDEDIR "/path/to/boost/include")
的事情。所以,在運行cmake之前,我想通過python代碼設置cmake變量。在python腳本中運行cmake命令
回答
在CMake處理開始之前,有兩種方法可以預先初始化CMake變量,都使用command-line arguments of cmake
。
簡單的方法是使用-D
命令行選項將一個或多個變量傳遞給CMake。是這樣的:
cmake -DBOOST_INCLUDEDIR:PATH="/path/to/boost/include" ...
另一種選擇是使用-C
創建「初始緩存文件」(基本上只包含set(...)
CMake的命令的文件),並通過該初始高速緩存文件的CMake:
echo 'set(BOOST_INCLUDEDIR "/path/to/boost/include" CACHE PATH "")' > initial_cache.cmake
cmake -C initial_cache.cmake ...
這個選項是用於第一次使用CMake時運行一個給定的二進制目錄,即之前它創建它自己的CMakeCache.txt
文件。
如何利用Python腳本中的一個或兩個腳本取決於您的特定設置。
是
選項1(如果你調用通過Python的cmake)
通過命令行設置的CMake緩存變量。從命令行定義這個語法是here
-D <var>:<type>=<value>
所以你的情況如下,CMake的列表文件
set(BOOST_INCLUDEDIR MY_BOOST_INCLUDE)
調用cmake的
cmake -DMY_BOOST_INCLUDE:STRING="/path/to/wherever"
時,然後只需重寫選項
選項2(如果您想在另一點調用cmake)
你可以在python中創建一個cmake模塊來設置你想要的定義。例如,做一個Python腳本,填充my_module.cmake
你想要的任何緩存變量,即
set(MY_BOOST_INCLUDE "script/generated/path")
#... other stuff you want to define
然後在靜態cmake的列表文件
include(my_module)
選項2a)用'-C my_cache.cmake'運行CMake預加載生成的文件以填充緩存。 – zaufi
一些的CMake的find modules做支持讀取路徑,從環境的暗示變量:
-
「用戶可以設置這些提示或結果的緩存條目。 [...]如果它們沒有被指定爲CMake變量或緩存條目,可以將它們指定爲環境變量。「
我喜歡設置查找模塊目錄的這個方法,因爲它的東西,我也可以設置系統級和我沒有給我的CMake的每一個項目的路徑,以我的自定義建庫了。
FindBoost.cmake
是一個很好的例子,因爲它提供了各種環境變量:Boost_DIR BOOSTROOT BOOST_ROOT BOOST_INCLUDEDIR BOOST_LIBRARYDIR
注:那些被認爲是 「提示」,因爲一旦找到boost,它們將不會覆蓋任何CMake緩存值。
- 1. 運行bash命令到python腳本
- 2. 通過python腳本運行ffmpeg命令
- 3. Python腳本來運行Django的命令
- 4. 從MEL命令運行的Python腳本
- 5. 從python腳本運行vim命令
- 6. 腳本在命令運行時運行
- 7. 如何在python腳本中運行python命令?
- 8. 在Cmake中運行自定義命令
- 9. 在shell腳本中運行命令
- 10. 在Expect腳本中運行Rsync命令
- 11. 在Matlab中運行腳本命令
- 12. 在perl腳本中運行awk命令
- 13. 在bash腳本中運行hadoop命令
- 14. 在python腳本中執行mysql命令
- 15. 命令在命令行中運行,但在Perl腳本中運行
- 16. 如何在django視圖中運行命令行python腳本?
- 17. 在你的Python腳本中運行命令行
- 18. 在Linux shell腳本中並行運行python命令
- 19. 從python(Django)shell中的python腳本運行python命令。 Django
- 20. 在Ruby腳本中運行命令行命令
- 21. Shell腳本:在shell腳本中運行「exit」命令後執行命令
- 22. 在命令行上運行asp腳本
- 23. 在命令行運行Shell腳本
- 24. 如何在Windows中的python腳本中運行maven命令
- 25. Cmake vs命令行:錯誤Cmake,不在命令行中
- 26. 在Python中運行命令
- 27. 在Python腳本中運行批處理命令
- 28. 在python腳本中運行bash命令X秒
- 29. 如何在Python腳本中運行bash命令?
- 30. 如何在Python腳本的子進程中運行命令?
這是有點不清楚你想達到什麼。你是否希望啓動Python作爲CMake處理你的'CMakeLists.txt'的一部分,並讓Python以某種方式在當前運行的CMake中設置CMake變量? – Angew
不,在運行'cmake'之前我想通過python腳本設置cmake變量。 –
你可以[編輯]你的問題,使其更明顯? – Angew