【问题标题】:CLion can't find CMake generated headers?CLion 找不到 CMake 生成的标头?
【发布时间】:2015-07-08 12:27:50
【问题描述】:

通过CMake tutorial

├── CMakeLists.txt
├── src
│   └── main.cpp
└── templates
    └── fooConf.h.in

CMakeLists.txt

cmake_minimum_required(VERSION 3.2)
project(foo)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(PROJECT_SOURCE_DIR src)
set(PROJECT_TEMPLATE_DIR templates)

set(SOURCE_FILES ${PROJECT_SOURCE_DIR}/main.cpp)
set(${PROJECT_NAME}_MAJOR 0)
set(${PROJECT_NAME}_MINOR 1)
set(${PROJECT_NAME}_MICRO 1)
configure_file (
  "${PROJECT_TEMPLATE_DIR}/fooConf.h.in"
  "${PROJECT_SOURCE_DIR}/fooConf.h"
)

add_executable(foo ${SOURCE_FILES})

模板/fooConf.h.in

#define @PROJECT_NAME@_VERSION_MAJOR @PROJECT_NAME@@_VERSION_MAJOR@
#define @PROJECT_NAME@_VERSION_MINOR @PROJECT_NAME@@_VERSION_MINOR@
#define @PROJECT_NAME@_VERSION_MICRO @PROJECT_NAME@@_VERSION_MICRO@

src/main.cpp

#include <iostream>

#include "src/fooConf.h"
// Also tried: "fooConf.h"

int main() {
    std::cout << foo_VERSION_MAJOR;
    return 0;
}

[错误]

fatal error: src/fooConf.h: No such file or directory

【问题讨论】:

    标签: c++ cmake clion


    【解决方案1】:

    您的fooConf.h 头文件在二进制 树中生成(准确地说,在${CMAKE_BINARY_DIR}/src/ 下)。因此,您应该发出对应的include_directories() 命令以在#include 中使用该文件。例如:

    CMakeLists.txt

    ....
    include_directories(${CMAKE_BINARY_DIR})
    add_executable(foo ${SOURCE_FILES})
    

    src/main.cpp

    ....
    #include "src/fooConf.h"
    

    【讨论】:

    • Clion 代码检查的任何解决方案?那里仍然没有找到生成的标题
    • @arved:我不知道。您能否将您的问题描述为另一个问题?代码自省与构建项目不同。此外,我认为您的情况与 OP 有所不同。
    猜你喜欢
    • 1970-01-01
    • 2015-10-19
    • 2021-03-06
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    • 2021-03-04
    • 2015-11-10
    相关资源
    最近更新 更多