我正在使用Linux、CMake和Conda,后者是一种包管理器,通过编辑
默认情况下,CMake对这些更改不敏感。我希望它能够自动重新生成所有Makefile,当
如何使用CMake简单地实现这一点?
$PATH
来切换“环境”。这意味着当我在Conda中运行特殊命令时,$PATH
指向不同的编译器,$CONDA_PREFIX
也会改变。默认情况下,CMake对这些更改不敏感。我希望它能够自动重新生成所有Makefile,当
$PATH
中找到不同的GCC,或者自上次明确的cmake
调用以来$CONDA_PREFIX
已经更改。这种重新生成类似于当您编辑顶层CMakeLists.txt
文件时CMake所做的 - 下次运行make
时它会重新生成所有内容。如何使用CMake简单地实现这一点?
add_custom_target
添加目标,该目标将检查构建树是否与当前环境相对应。对于不匹配的构建,目标可能会简单地失败并显示适当的消息。如果需要部分重新配置,则强制CMake重新运行(请参见,例如,此邮件)可能很有用。但是,由于编译器已更改,您可能需要丢弃所有与编译器相关的缓存,这实际上是一个干净的配置(在干净的构建目录上调用cmake
)。 - Tsyvarev