0
我正在使用Linux,CMake和Conda,它是一个包管理器,它编辑$PATH
作为在“环境”之间切换的一种方式。这意味着当我在Conda中运行一个特殊命令时,$PATH
指向一个不同的编译器。 $CONDA_PREFIX
也改变了。CMake:当环境变量发生变化时触发Makefiles的再生
默认情况下,CMake对这些更改不敏感。我希望它是。具体来说,我希望CMake在$PATH
中找到不同的GCC时自动重新生成所有Makefile,或者自上次显式cmake
调用以来$CONDA_PREFIX
已更改。这种再生将类似于当您编辑顶级CMakeLists.txt
文件时CMake所做的事情 - 下次运行make
时,它会重新生成所有内容。
如何使用CMake以简单的方式执行此操作?
自然的方法似乎为每个额外的“环境”创建新的构建树。 – Tsyvarev
@Tsyvarev:我明白你的意思,但这并不能解决问题 - 如果用户意外地在错误的(不匹配的)Conda环境与CMake构建树中,构建可能有缺陷。我试图确保构建永远不匹配。 –
您可以添加目标(通过'add_custom_target'),它会检查构建树是否与当前环境相对应。对于不匹配的构建,目标可能会因适当的消息而失败。如果您需要*部分重新配置,则强制CMake重新运行(请参阅,例如[该邮件](http://public.kitware.com/pipermail/cmake/2010-November/040777.html))可能会有用。但是,当编译器发生变化时,您可能需要放弃所有与编译器相关的缓存,这实际上是一个干净的配置(干净的构建目录中的'cmake'调用)。 – Tsyvarev