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