在Python脚本中运行cmake命令是否可行?我想通过Python代码设置手动安装和编译的boost库。我希望有像set(BOOST_INCLUDEDIR "/path/to/boost/include")
这样的内容在Python脚本中实现。因此,在运行cmake之前,我希望通过Python代码设置cmake变量。
在Python脚本中运行cmake命令是否可行?我想通过Python代码设置手动安装和编译的boost库。我希望有像set(BOOST_INCLUDEDIR "/path/to/boost/include")
这样的内容在Python脚本中实现。因此,在运行cmake之前,我希望通过Python代码设置cmake变量。
cmake
。-D
命令行选项将一个或多个变量传递给 CMake。例如:cmake -DBOOST_INCLUDEDIR:PATH="/path/to/boost/include" ...
set(...)
CMake命令的文件),并使用-C
将该初始缓存文件传递给CMake:echo 'set(BOOST_INCLUDEDIR "/path/to/boost/include" CACHE PATH "")' > initial_cache.cmake
cmake -C initial_cache.cmake ...
CMakeCache.txt
文件之前。是的
通过从命令行设置cmake缓存变量。从命令行定义此变量的语法如下:这里。
-D <var>:<type>=<value>
set(BOOST_INCLUDEDIR MY_BOOST_INCLUDE)
当调用cmake时,只需覆盖该选项即可。
cmake -DMY_BOOST_INCLUDE:STRING="/path/to/wherever"
您可以使用Python创建一个cmake模块,以设置所需的定义。例如,可以创建一个Python脚本,将任何缓存变量填充到my_module.cmake
中,即:
set(MY_BOOST_INCLUDE "script/generated/path")
#... other stuff you want to define
include(my_module)
CMake的查找模块中的一些支持从环境变量中读取路径提示:
"用户可以将这些提示或结果设置为缓存条目。[...] 如果它们没有被指定为CMake变量或缓存条目,则可以将其指定为环境变量。"
我更喜欢使用这种设置查找模块目录的方法,因为我也可以在系统级别上设置它,而不必再为每个CMake项目提供自定义构建库的路径。
FindBoost.cmake
是一个很好的例子,因为它提供了各种环境变量:
Boost_DIR
BOOSTROOT
BOOST_ROOT
BOOST_INCLUDEDIR
BOOST_LIBRARYDIR
注意:这些被认为是“提示”,因为一旦boost被找到,它们不会覆盖任何CMake缓存值。
CMakeLists.txt
时启动Python,并让Python以某种方式设置当前正在运行的CMake中的变量吗? - Angew is no longer proud of SOcmake
之前,我想通过Python脚本设置cmake变量。 - abhay gurrala