Как я могу заставить CMake построить свой проект, показывая папку include? - PullRequest
0 голосов
/ 26 марта 2020

Скажем, например, у меня есть иерархия проектов, выложенная примерно так ...

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)

Я искал inte rnet и наткнулся на это,

CMake: Как показать заголовки в «Заголовочные файлы» в проекте Visual Studio?

, и это работает, но GLOB_RECURSE считается плохой практикой. Есть ли альтернатива?

1 Ответ

1 голос
/ 26 марта 2020

Обычный способ также включить заголовочные файлы в проект - это также перечислить их в команде add_executable.

Возможно что-то вроде

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

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

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