我正在使用Linux,CMake和Conda,它是一个包管理器,可以编辑$PATH
作为在“环境”之间切换的方式。这意味着当我在Conda中运行特殊命令时,$PATH
指向不同的编译器。 $CONDA_PREFIX
也已更改。
默认情况下,CMake对这些更改不敏感。我希望它是。具体来说,我希望CMake在$PATH
中找到不同的GCC时自动重新生成所有Makefile,或者当$CONDA_PREFIX
自上次显式cmake
调用后发生更改时。这种重新生成类似于CMake在编辑顶级CMakeLists.txt
文件时所执行的操作 - 下次运行make
时,它会重新生成所有内容。
如何使用CMake以简单的方式完成此操作?
答案 0 :(得分:2)
今天我最终不需要变通方法代码,但这是一个主意。这不是一般性的-它要求您明确指定构建所依赖的变量。
echo
将它们全部以VARIABLE=value
格式放入${CMAKE_CURRENT_BINARY_DIR}/buildvars.environment
文件中。仅当文件不存在或文件内容不同时才这样做。cmake
时,如果文件比内部配置新,请添加cmake -DCMAKE_CONFIGURE_DEPENDS=<build_direcotry>/buildvars.environment
来触发重新配置。参考文献:
相关问题:How to trigger a CMake reconfigure when the output of a command changes
答案 1 :(得分:-1)
简而言之,生成的构建目录不应再依赖于环境。
如果用户意外地出现错误(不匹配)的Conda环境与CMake构建树,则构建可能有缺陷。
如果您使用find_program()命令来确定您正在使用的所有工具的路径,那么这将永远不会发生。为每个工具使用完整路径并为每个环境设置创建构建目录是处理此问题的首选方法。