簡體   English   中英

如何一次刪除由 `cmake -D` 定義的所有變量?

[英]How can I remove all variables defined by `cmake -D` at once?

如何一次刪除cmake -D定義的所有變量?

例如,我使用以下方法定義FOOBAR

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM