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

C++ CMake-将选项集成到C++;源文件,c++,cmake,c-preprocessor,configure,C++,Cmake,C Preprocessor,Configure,我正在处理一个现有的项目,并为它清理CMake。然而,现在我对如何将CMake选项集成到实际的源代码中感到有点困惑 为了简单起见,假设我只想执行一段代码,假设cout您可以组合选项和添加cmake like的定义。因为一个简单的例子比一个长文本更清楚,所以这里有一个小main.c: #include<stdio.h> int main(int argc, char *argv[]) { printf("start\n"); #ifdef USE_DEBUG

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


为了简单起见,假设我只想执行一段代码,假设
cout您可以组合
选项
添加cmake like的定义。因为一个简单的例子比一个长文本更清楚,所以这里有一个小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;
 }

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

您能提供实际生成的cpp文件、生成的config.h文件和实际编译器(?)错误消息吗?我不确定我是否收到了您的要求,抱歉。你是指实际的文件还是CMake将从中生成的任何文件?如果你指的是实际的文件:这个项目相当大,这将非常困难。然而,我上面的示例项目几乎是正在发生的事情的简化副本。其中一个错误是:
./vlApplication/libvlapp.a(vlmpipApplication.cpp.o):在函数“VLAPP::mpipapplication::draw()”:vlMPIApplication.cpp:(.text+0x3043):未定义对'VLUTIL::Timers::mpimerManager::syncMultiTimers()
i.e.(据我所知,它找不到syncMultiTimers()函数)这是我的
#ifdef
之间的东西,如果这能与您的简化项目重新配合,那就足够了。我想看看您在问题中提到的example.cpp和Config.h(假设您确实有这个小的repo项目)。现在,您给出的错误实际上是说缺少该方法。当您期望它在那里时,是否是这种情况,即在这种情况下选项是否为“开”?你确定你的ifdef和宏是正确的吗?这比浏览配置文件要优雅得多,而且工作做得很出色。精彩的。
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)