【问题标题】:How can I get CMake to build my project while showing the include folder?如何在显示包含文件夹的同时让 CMake 构建我的项目?
【发布时间】:2020-03-26 04:27:42
【问题描述】:

例如,我有这样的项目层次结构......

CMAKE_PROJECT/
|
   |-build/
   |-include/
       |-Entity.hpp
       |-Scene.hpp
   |-src/
       |-Entity.cpp
       |-Scene.cpp
   CMakeLists.txt

如何让我的包含文件显示在我的 CodeLite 项目中。它显示我的src 文件非常好,但include 文件夹是空的。一切都在 IDE 中编译和构建,只是标题包含在项目中不可见。我可以对我的CMakeLists 做些什么来解决这个问题?

cmake_minimum_required(VERSION 3.13.4)

project(CMake_Project)
set(EXECUTABLE_NAME "CMake_Project")

set (CMAKE_CXX_STANDARD 14)
set (CMAKE_CXX_STANDARD_REQUIRED YES)
set (CMAKE_CXX_EXTENSIONS OFF)
set (CMAKE_BUILD_TYPE Debug)

set(SOURCES src/Entity.cpp 
            src/Scene.cpp)

include_directories(include)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "../")

set(SFML_DIR "C:\\libs\\SFML-2.5.1\\lib\\cmake\\SFML")
set(SFML_STATIC_LIBRARIES TRUE)

find_package(SFML 2.5 COMPONENTS  audio network graphics window system REQUIRED)
add_executable(${EXECUTABLE_NAME} ${SOURCES})
target_link_libraries(${EXECUTABLE_NAME} sfml-audio sfml-network sfml-graphics sfml-window sfml-system)

我在网上搜索了一下,发现了这个,

CMake: How to show headers in "Header files" in Visual Studio project?

它可以工作,但GLOB_RECURSE 被认为是一种不好的做法。有替代品吗?

【问题讨论】:

  • 您可以列出add_executable 命令的头文件和源文件吗?或者可能使用source_group 命令?
  • @Someprogrammerdude 它工作了!......虽然我可以发誓我之前尝试将标题添加到add_executable......不太清楚为什么它现在工作......这可能是这个问题的范围,但是您是否知道为什么我的src 文件夹中有一个src 文件夹。我的包含文件夹也是如此。例如,src/src/<some_source_files>。在我的项目层次结构中,它绝对不是那样的。这是 CMake 造成的吗?
  • 可能与 Codelite IDE 设置有关?我不知道,因为我自己并没有真正使用它。
  • @Someprogrammerdude 它似乎与 IDE 相关,因为当我为另一个 IDE 构建源代码时,文件结构完全不同。您可以发布您的第一条评论作为答案,我很乐意接受它
  • 有一个非常相似的问题,有几个答案here

标签: c++ cmake ide codelite


【解决方案1】:

在项目中也包含头文件的常用方法是在add_executable 命令中也列出它们。

可能是这样的

set(SOURCES src/Entity.cpp 
            src/Scene.cpp)

set(HEADERS include/Entity.hpp 
            include/Scene.hpp)

add_executable(${EXECUTABLE_NAME} ${SOURCES} ${HEADERS})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 2014-07-09
    • 1970-01-01
    相关资源
    最近更新 更多