gpt4 book ai didi

c++ - CMake - 将选项集成到 C++ 源文件中

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:28:50 24 4
gpt4 key购买 nike

我正在处理一个现有项目并为它清理 CMake。但是,现在我对如何将 CMake 选项集成到实际源代码中感到有点困惑。

为简单起见,假设我只想执行一段代码,假设 cout << "print"; , 里面 example.cpp如果在 CMake 上,值 ENABLE_PRINT设置为 ON .

项目目录如下所示: folder layout

使用上面的例子,我做了以下事情:

  1. 关于父项目 CMakeLists.txt , 我添加了 OPTION( ENABLE_PRINT "Enable Print" ON)
  2. 然后,在示例子项目源文件夹 Config.h文件,我添加了#define ENABLE_PRINT
  3. Config.h.in 上位于示例子项目,我添加了#cmakedefine ENABLE_PRINT
  4. 最后,关于源文件example.cpp ,我圈了cout << "print";里面#ifdef ENABLE_PRINT#endif

进行这些更改后,项目将配置并生成得很好。然而,当我制作软件时,它会出错,并基本上告诉我我用 #ifdef 包围的代码块根本没有被执行;它被忽略了。换句话说,除了“注释掉”我想以 ENABLE_PRINT 为条件的代码块之外,我采取的上述步骤没有做任何事情。

那么,我将如何进行这项工作?

最佳答案

你可以结合cmake的optionadd_definitionshere .由于一个简单的例子比长文本更清晰,所以这里有一个小的 main.c :

 #include<stdio.h>

int main(int argc, char *argv[])
{
printf("start\n");
#ifdef USE_DEBUG
printf("Using debug\n");
#endif
printf("end\n");
return 0;
}

CMakeLists.txt 是:

cmake_minimum_required (VERSION 2.6)
project (HELLO)

option(WITH_DEBUG "Use debug" OFF)

if (WITH_DEBUG)
MESSAGE(STATUS "WITH_DEBUG")
add_definitions(-DUSE_DEBUG)
endif()

add_executable (main main.c)

您可以通过键入 cmake .cmake 来尝试。 -DWITH_DEBUG=ON 然后 make./main

关于c++ - CMake - 将选项集成到 C++ 源文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24663333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com