是否可以在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