CMake 引用我在 ~/bin 中创建的随机 shell 脚本(即使我删除了它)?
CMake referencing random shell script i created in ~/bin (even after i deleted it)?
在Ubuntu(20.04,Cinnamon桌面(中,我创建了一个基本的shell脚本,用于从命令行运行.desktop文件,其中包含以下内容:
#!/bin/sh
$(grep '^Exec' $1 | tail -1 | sed 's/^Exec=//' | sed 's/%.//' | sed 's/^"//g' | sed 's/" *$//g') &
然后运行chmod +x
以便能够将其作为命令执行。现在,每当我使用cmake --build
时,它都包含此文件的内容 - 即使我删除了有问题的脚本并完全重新启动。 这是我最近尝试 cmake 的输出:
alexander@alexander-Inspiron-7559:~/Documents/Code/CPP/SDLProject/bin$ cmake --build .
CMake Error: The current CMakeCache.txt directory /home/alexander/Documents/Code/CPP/SDLProject/bin/CMakeCache.txt is different than the directory /home/alexander/Documents/Code/CPP/OGRE-Project-1/bin where CMakeCache.txt was created. This may result in binaries being created in the wrong place. If you are not sure, reedit the CMakeCache.txt
[ 0%] Building CXX object CMakeFiles/SDLProject.dir/src/main.cpp.o
In file included from /home/alexander/Documents/Code/CPP/OGRE-Project-1/src/App.hpp:10,
from /home/alexander/Documents/Code/CPP/OGRE-Project-1/src/main.cpp:1:
/home/alexander/Documents/Code/CPP/OGRE-Project-1/src/text/Label.hpp:8:8: warning: character constant too long for its type
8 | $(grep '^Exec' $1 | tail -1 | sed 's/^Exec=//' | sed 's/%.//' | sed 's/^"//g' | sed 's/" *$//g') &
| ^~~~~~~
/home/alexander/Documents/Code/CPP/OGRE-Project-1/src/text/Label.hpp:8:35: warning: character constant too long for its type
8 | $(grep '^Exec' $1 | tail -1 | sed 's/^Exec=//' | sed 's/%.//' | sed 's/^"//g' | sed 's/" *$//g') &
| ^~~~~~~~~~~~
/home/alexander/Documents/Code/CPP/OGRE-Project-1/src/text/Label.hpp:8:54: warning: character constant too long for its type
8 | $(grep '^Exec' $1 | tail -1 | sed 's/^Exec=//' | sed 's/%.//' | sed 's/^"//g' | sed 's/" *$//g') &
| ^~~~~~~~
/home/alexander/Documents/Code/CPP/OGRE-Project-1/src/text/Label.hpp:8:69: warning: character constant too long for its type
8 | $(grep '^Exec' $1 | tail -1 | sed 's/^Exec=//' | sed 's/%.//' | sed 's/^"//g' | sed 's/" *$//g') &
| ^~~~~~~~~
/home/alexander/Documents/Code/CPP/OGRE-Project-1/src/text/Label.hpp:8:85: warning: character constant too long for its type
8 | $(grep '^Exec' $1 | tail -1 | sed 's/^Exec=//' | sed 's/%.//' | sed 's/^"//g' | sed 's/" *$//g') &
| ^~~~~~~~~~~
/home/alexander/Documents/Code/CPP/OGRE-Project-1/src/text/Label.hpp:8:2: error: expected constructor, destructor, or type conversion before ‘(’ token
8 | $(grep '^Exec' $1 | tail -1 | sed 's/^Exec=//' | sed 's/%.//' | sed 's/^"//g' | sed 's/" *$//g') &
| ^
In file included from /home/alexander/Documents/Code/CPP/OGRE-Project-1/src/main.cpp:1:
/home/alexander/Documents/Code/CPP/OGRE-Project-1/src/App.hpp:24:2: error: ‘Label’ does not name a type
24 | Label *lb;
| ^~~~~
make[2]: *** [CMakeFiles/SDLProject.dir/build.make:63: CMakeFiles/SDLProject.dir/src/main.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:76: CMakeFiles/SDLProject.dir/all] Error 2
make: *** [Makefile:84: all] Error 2```
查看 CMakeCache.txt 文件中是否引用了您创建然后删除的脚本。如果是,则删除/删除引用。
我记得 Cmake 是一个"源外目录"构建工具(您创建一个新的空构建目录,然后引用您的源目录(。当它开始构建时,它会为文件生成一个缓存/列表 - 请参阅"CMakeCache.txt" - 以帮助在编译时依赖关系。
删除"CMakeCache.txt"文件也可能对您有用,因为它将由 cmake 重新生成。
相关文章:
- 将数组的地址分配给变量并删除
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- C/C++编译器通常会删除重复的库吗
- 从链接列表c++中删除一个项目
- C++如何通过用户输入删除列表元素
- 为什么在C++中使用私有复制构造函数与删除复制构造函数
- 是否需要删除包含对象的"pair"?
- 如何在自删除后将对象设置为nullptr
- 迭代时从向量和内存中删除对象
- 如何通过cpp程序运行shell脚本
- 使用函数"remove"删除重复元素
- 如何从多映射中删除特定的重复项
- 运算符C++ "delete []"仅删除 2 个前值
- 删除指向指针的指针是运行时错误吗
- 将指针设置为"nullptr"并不能防止双重删除?
- 为什么示例代码访问IUnknown中已删除的内存
- 如何通过 getter 函数删除矢量的元素?
- 从控制台中删除最后打印的元素
- C++中的线程安全删除
- CMake 引用我在 ~/bin 中创建的随机 shell 脚本(即使我删除了它)?