CLion无法获取(复杂的)预处理程序定义

时间:2019-09-23 09:34:30

标签: c++ cmake clion

编辑:原来问题是我的项目很复杂。使用下面的简单示例可以正常工作,但是CLion无法理解我正在处理的项目的复杂依赖关系。暂时将链接的问题用作解决方法。

我将CLion用作C ++ IDE,并添加了一个简单的预处理器指令作为CMake选项:

cmake_minimum_required(VERSION 3.10)
project(cmake_macro_test)

set(CMAKE_CXX_STANDARD 14)

option(SIMPLE_FLAG "My simple flag." ON)
if(SIMPLE_FLAG)
    add_definitions(-DSIMPLE_FLAG) # Using CMake 3.10
endif()

add_executable(cmake_macro_test main.cpp)

然后我的代码具有以下形式的条件编译部分:

#include <iostream>

int main() {

#ifdef SIMPLE_FLAG
// Do things
  std::cout << "Hello, World!" << std::endl;
#else
  // Do other things
  std::cout << "Goodbye, World!" << std::endl;
#endif
  return 0;
}

该标志默认情况下设置为on,因此我希望Clion将从CMakeLists.txt中拾取它并突出显示代码的相关部分。

但是,Clion认为代码的//Do things部分已失效,并且确实为该部分提供了语法突出显示或自动完成功能,除非我实际上在同一文件中重新定义了该标志,这会破坏目的。 CMake选项。

这是CLion的已知问题吗?有什么方法可以确保IDE可以拾取预处理器标志吗?

0 个答案:

没有答案