我想從CMake變量中刪除特定的庫。刪除變量的特定部分
假設LIB
包含變量「A; B; C」的值, 我知道使用set
添加另一個變量「d」的comtent這樣
set(LIB ${LIB};D)
但是我試圖除去「 C「from LIB
like following
unset(LIB C)
此代碼無效。 有沒有人知道這樣做的好方法?
我想從CMake變量中刪除特定的庫。刪除變量的特定部分
假設LIB
包含變量「A; B; C」的值, 我知道使用set
添加另一個變量「d」的comtent這樣
set(LIB ${LIB};D)
但是我試圖除去「 C「from LIB
like following
unset(LIB C)
此代碼無效。 有沒有人知道這樣做的好方法?
這不是unset
的工作原理。在你的例子中,unset(LIB C)
取消設置變量LIB
和C
。它不會從LIB
中刪除C
部分。因爲所有變量都是CMake內部的字符串,所以應該使用string(REPLACE)
。在你的情況
string(REPLACE C "" LIBwithoutC LIB)
用一個空字符串替換的C
所有出現並將結果在LIBwithoutC
。您可能需要對此進行微調以刪除額外的分號。
有你可能已經知道至少在三個方面:
run cmake-gui (or make edit_cache) to open the "cache editor", i.e. the GUI for cmake
the "Holzhammer" method: simply remove the complete cache or build directory and start again
and delete the entries you don't want there
open CMakeCache.txt in a text editor and edit it manually
還有另一種方式做,你也許還不知道。 除了「-D」(定義變量),cmake還有「-U」(undefine變量),您可以使用它來從緩存中刪除條目。 它是這樣的:$ cmake -U * QT *。
嘗試了幾次後,我發現 '字符串(替換 「C」; 「」 LIBwithoutC 「$ {} LIB」)' 作品。使用「$ {LIB}」可以將這些變量作爲字符串處理。 https://cmake.org/pipermail/cmake/2016-January/062594.html –