我对整个CMake逻辑和语法还很陌生。对于我正在处理的代码,我需要使用cap_set_proc
函数来处理流程功能标志(man link)。所以我决定从您在这里看到的一段非常愚蠢的代码开始:
#include<iostream>
#include<string>
#include<sys/capability.h>
using namespace std;
int main(){
cap_t test = cap_get_proc();
string whatsTest(cap_to_text(test,nullptr));
cout<<whatsTest<<endl;
return 0;
}
(目前,我不在乎我编写的代码是否有意义...)
现在,如果我只使用
c++
(如下所示),那么一切都可以正常编译,并且可执行文件可以正常运行:c++ test_main.cpp -o test_cap -lcap
问题是我正在从事的项目非常庞大,并且非常依赖CMake。因此,我想使用CMake编译相同的代码...如何编写CMakeLists.txt文件,使我可以获得与前几行中显示的编译器指令相同的结果?
最佳答案
您需要的东西如下所示:
cmake_minimum_required(VERSION 3.17)
project(TestCapProject)
# Add your executable target.
add_executable(test_cap test_main.cpp)
# Link the libcap library to your executable.
target_link_libraries(test_cap PRIVATE cap)
如果要将其添加到现有CMake项目中,则可能仅需要最后两行或三行,具体取决于您的项目层次结构。
我建议您通读CMake guide以了解一些基本的CMake命令。
您需要的两个主要命令的文档在这里:
add_executable()
target_link_libraries()
关于c++ - 使用CMake添加C++编译器标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61617726/