使用 CMake 添加 C++ 编译器标志

Lan*_*784 1 c++ cmake

我对整个 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;

}
Run Code Online (Sandbox Code Playgroud)

(目前,我不在乎我写的代码是否有意义......)
现在,如果我只是使用c++(如下所示)一切都可以正常编译并且可执行文件运行没有任何问题:

c++ test_main.cpp -o test_cap -lcap
Run Code Online (Sandbox Code Playgroud)

问题是我正在工作的项目非常庞大,并且非常依赖 CMake。所以我想编译相同的代码,但使用 CMake... 我如何编写一个 CMakeLists.txt 文件,让我获得与前几行中显示的编译器指令相同的结果?

squ*_*les 5

您只需要以下内容即可:

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)
Run Code Online (Sandbox Code Playgroud)

如果要将其添加到现有 CMake 项目中,则可能只需要最后两行或三行,具体取决于您的项目层次结构。

我建议通读 CMake指南以了解一些基本的 CMake 命令。

您需要的两个主要命令的文档在这里: