Witam!
Tworzę dynamicznie linkowaną bibliotekę (shared library) pod Linux'em z użyciem CMake'a. Całą bibliotekę (a właściwie framework, czy engine) mam podzieloną na "moduły", każdy z nich znajduje się w osoblnym folderze:
PalladiumEngine
|
|-Core
| - *.hpp
|-GUI
| - *.hpp
...
Chciałbym aby pliki nagłówkowe przy instalacji (make install) trafiały do wydzielonych folderów Core, GUI etc., aby można było się donich odnosić po instalacji w taki sposób: #include <PalladiumEngine/Core/x.hpp>
CMakeLists.txt:
#CMake file for Palladium Engine
cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
project(PalladiumEngine VERSION 0.1.1 LANGUAGES CXX)
include(GNUInstallDirs)
set(PROJECT_DESCRIPTION "Palladium Engine API library")
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
set(CMAKE_CXX_STANDARD 11)
find_package(SDL2 REQUIRED)
if(MSVC)
if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
endif()
elseif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
endif()
file(GLOB SOURCES "src/*.cpp")
file(GLOB_RECURSE HEADERS "include/*.hpp")
include_directories("include/" ${SDL2_INCLUDE_DIR})
add_library(pdengine SHARED ${SOURCES})
target_link_libraries(pdengine PUBLIC ${SDL2_LIBRARY})
set_target_properties(pdengine PROPERTIES
VERSION ${PROJECT_VERSION}
SOVERSION 0
PUBLIC_HEADER "${HEADERS}"
)
configure_file(pdengine.pc.in pdengine.pc @ONLY)
install(TARGETS pdengine
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/PalladiumEngine/")
install(FILES ${CMAKE_BINARY_DIR}/pdengine.pc
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig)
Przy obecnym ustawieniu, wszystkie pliki trafiają do folderu "usr/lib/PalladiumEngine/". Chodzi mi o rodzielenie ich na podfoldery.
Z góry dziękuję!