CLion找不到CMake生成的标头? [英] CLion can't find CMake generated headers?

查看:614
本文介绍了CLion找不到CMake生成的标头?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

通过 CMake教程

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



CMakeLists.txt



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})



templates / fooConf.h.in



templates/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



src/main.cpp

#include <iostream>

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

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



[错误]



[Error]

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


推荐答案

您的 fooConf.h 头文件是在 binary 树中生成的(确切地说,在 $ {CMAKE_BINARY_DIR} / src / )。因此,您应该发出相应的 include_directories()命令,以便在 #include 中使用该文件。例如:

Your fooConf.h header file is generated in the binary tree (precisely, under ${CMAKE_BINARY_DIR}/src/). So you should issue corresponded include_directories() command for use that file in #include. E.g.:

CMakeLists.txt

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

src / main.cpp

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

这篇关于CLion找不到CMake生成的标头?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆