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

标签 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;

}

(目前,我不在乎我编写的代码是否有意义...)
现在,如果我只使用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/

    相关文章:

    c++ - C++ Cmake的OpenCV

    c++ - VxWorks with Eclipse - 缺少头文件

    c++ - boost 变体 : How to model JSON?

    c++ - 在 C++ 项目中管理自由函数有哪些好的做法?

    c# 如何使用新的 Version Helper API

    git - 如何跨不同构建工具管理发布版本?

    c++ - 根据 cmake 目标启用宏

    c++ - C++ WINAPI 中 UpDown 控件中的值递增和递减

    c++ - Visual Studio C++ 2008/2010 - 浮点 NaN 中断

    linux - 由cmake构建后如何运行程序?