• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

CMake instalacja biblioteki

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
399 wizyt
pytanie zadane 2 marca 2018 w C i C++ przez Michał Gibas Pasjonat (19,630 p.)

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ę!

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 363 wizyt
pytanie zadane 4 września 2017 w C i C++ przez qlucha Obywatel (1,790 p.)
0 głosów
2 odpowiedzi 611 wizyt
pytanie zadane 28 kwietnia 2018 w C i C++ przez sofnir Gaduła (4,690 p.)
0 głosów
1 odpowiedź 529 wizyt
pytanie zadane 27 maja 2017 w C i C++ przez niezalogowany

93,434 zapytań

142,429 odpowiedzi

322,662 komentarzy

62,797 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...