[英]How can I remove all variables defined by `cmake -D` at once?
如何一次刪除cmake -D
定義的所有變量?
例如,我使用以下方法定義FOO
和BAR
:
cmake -DFOO=foo -DBAR=bar
當我運行cmake -U*../
時出現錯誤,
CMake Error: File /Modules/CMakeSystem.cmake.in does not exist.
CMake Error at /usr/share/cmake-3.10/Modules/CMakeDetermineSystem.cmake:186 (configure_file):
configure_file Problem configuring file
Call Stack (most recent call first):
CMakeLists.txt:3 (project)
-D
選項定義的所有變量? 當使用cmake -D
命令行選項定義緩存變量時,它們與所有其他 CMake 定義的緩存變量一起放置在CMakeCache.txt
文件中。 要列出所有緩存的變量,您可以運行cmake -LAH
。 以CMAKE_
在內部設置和使用。 當你運行時:
cmake -U* ..
您刪除所有緩存的變量,包括這些關鍵CMAKE_
變量。 這會使您的 CMake 項目構建在損壞的 state 中。 cmake -U
選項的文檔甚至對此發出警告:
小心使用,你可以讓你的
CMakeCache.txt
不工作。
沒有特殊方法可以僅刪除用戶通過cmake -D
選項手動定義的那些緩存變量。 您必須單獨刪除它們:
cmake -U FOO -U BAR ..
或者,您可以打開CMakeCache.txt
文件,然后從文件中手動刪除它們。
另一種選擇是完全刪除CMakeCache.txt
文件,該文件將從頭開始在您的項目上運行 CMake。
我建議為您的-D
命令行變量添加一個公共前綴(例如MYVAR_
)。
cmake -D MYVAR_FOO=foo -D MYVAR_BAR=bar ..
這樣,當在 CMake GUI 中查看時,它們被整齊地分組,您可以使用-U
通配表達式從緩存中安全地刪除所有它們:
cmake -U MYVAR_* ..
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.