删除变量的特定部分

时间:2017-10-14 04:30:02

标签: cmake

我想从CMake变量中删除特定库。

假设LIB包含变量“A; B; C”的值, 我知道使用set添加另一个变量“D”的内容,就像这样

set(LIB ${LIB};D)

但是我试图从LIB删除“C”,如下所示

unset(LIB C)

此代码不起作用。 有没有人知道这样做的好方法?

2 个答案:

答案 0 :(得分:2)

这不是 foreach($_SESSION['movie'] as $key => $value){ echo "Movie: " .$key."=". $value; } foreach($_SESSION['session'] as $key => $value){ echo "Session: " .$key."=". $value; } 的工作方式。在您的示例中,$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43"); foreach($age as $x => $x_value) { echo "Key=" . $x . ", Value=" . $x_value; echo "<br>"; } 取消了变量unsetunset(LIB C)。它不会从LIB删除C部分。

由于所有变量都是CMake中的内部字符串,因此您应该使用C。在你的情况下

LIB

用空字符串替换所有出现的string(REPLACE),并将结果存储在string(REPLACE C "" LIBwithoutC LIB) 中。您可能需要对此进行微调以删除额外的分号。

答案 1 :(得分:-2)

至少有三种方法可能已经知道:

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”(非定义变量),您可以使用它从缓存中删除条目。 它是这样的:$ cmake -U * QT *。