Добавить исходники в CMakelist
мой небольшой проект начал сильно расти и я решил раскидать его файлы по папкам для удобства не складывать же все в add_executable) и с этим у меня возникла проблема. Не понимаю как сделать это правильно.
вот структура проекта и каталоги в нем:
root
- src
- core
App.h
App.cpp
CMakelist.txt
CMakelist.txt
main.cpp
CMakelist.txt
Вот так выглядит мейклист в root:
cmake_minimum_required(VERSION 3.17)
project(edu)
set(CMAKE_CXX_STANDARD 17)
## add subdirectory with source files
add_subdirectory(src)
add_executable(edu main.cpp)
target_link_libraries(
edu
core)
Вот так он выглядит в src:
add_subdirectory(core)
И вот так он выглядит в core:
set(all_src
App.h
App.cpp
cxxopts.hpp
Helpers.h
)
add_library(core)
target_sources(core PUBLIC ${all_src})
Проблема в том, что теперь файлы, которые я раскидал по папкам, перестали видеть глобальные импорты хедеров и других файлов из других папок. Как починить это?
И вообще как просто раскидать исходного проекта по папкам. Спасибо!
Ответы (1 шт):
Автор решения: Andrianov Roma
→ Ссылка
Для вашего проекта хватит подобной конфигурации:
project/
-build/
CMakeLists.txt
-include/
*.h
-src/
*.cpp
CMakeLists.txt:
cmake_minimum_required(VERSION 3.10)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
project(project_name VERSION 1.0)
include_directories(${CMAKE_SOURCE_DIR})
file (GLOB_RECURSE SRC_FILES CONFIGURE_DEPENDS
${CMAKE_SOURCE_DIR}../src/*.cpp
)
add_executable(project_name ${SRC_FILES})
target_include_directories(project_name PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}../include)