Как я могу заставить CMake построить мой проект, показывая включаемую папку?

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

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: как отображать заголовки в заголовке файлы в проекте Visual Studio?

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


person PrimRock    schedule 26.03.2020    source источник
comment
Вы можете указать файлы заголовков вместе с исходными файлами для add_executable. команда? Или, возможно, используйте команду source_group?   -  person Some programmer dude    schedule 26.03.2020
comment
@Someprogrammerdude Это сработало! ...... Хотя я мог бы поклясться, что пытался добавить заголовки в add_executable раньше ... Не совсем уверен, почему это сработало сейчас ... Возможно, это выходит за рамки этого вопроса, но знаете ли вы? У меня есть шанс понять, почему у меня есть папка src в моей папке src. То же самое с моей папкой include. Например, src/src/<some_source_files>. Это определенно не так в моей иерархии проектов. Это что-то CMake вызывает?   -  person PrimRock    schedule 26.03.2020
comment
Возможно, это связано с настройкой Codelite IDE? Не знаю, так как сам не пользуюсь.   -  person Some programmer dude    schedule 26.03.2020
comment
@Someprogrammerdude Похоже, что это связано с IDE, потому что, когда я создал исходный код для другой IDE, структура файла была совершенно другой. Вы можете опубликовать свой первый комментарий в качестве ответа, и я с радостью приму его.   -  person PrimRock    schedule 26.03.2020
comment
Существует очень похожий вопрос с несколькими ответами здесь.   -  person squareskittles    schedule 26.03.2020


Ответы (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})
person Some programmer dude    schedule 26.03.2020