]> O.S.I.I.S - jp/vkhelpers.git/commitdiff
add target include dirs to vkh_obj
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Mon, 24 Jan 2022 01:43:38 +0000 (01:43 +0000)
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Mon, 24 Jan 2022 01:43:38 +0000 (01:43 +0000)
CMakeLists.txt

index a645ad293098ac7e396982ecdb402ab1acde4c96..34ad3359850739fb0f7a4d31135b25e1d5f694f0 100644 (file)
@@ -3,12 +3,12 @@ CMAKE_MINIMUM_REQUIRED(VERSION 3.16)
 OPTION (VKH_BUILD_SHARED_LIB "Build using shared libraries" OFF)
 OPTION(VKH_ENABLE_VMA "enable Vulkan Memory Allocator" ON)
 
-if (VKH_ENABLE_VMA)
-       SET(LANG "CXX")
-ELSE()
+#if (VKH_ENABLE_VMA)
+#      SET(LANG "CXX")
+#ELSE()
        SET(LANG "C")
-ENDIF()
-SET(CMAKE_CXX_STANDARD 11)
+#ENDIF()
+SET(CMAKE_${LANG}_STANDARD 11)
 
 PROJECT(vkh VERSION 0.1.0 DESCRIPTION "Vulkan helpers library" LANGUAGES ${LANG})
 
@@ -49,6 +49,7 @@ endif ()
 IF (VKH_ENABLE_VMA)
        ADD_DEFINITIONS (-DUSE_VMA)
 ENDIF ()
+
 IF (ENABLE_VALIDATION)
        ADD_DEFINITIONS (-DVKH_USE_VALIDATION)
 ENDIF ()
@@ -58,9 +59,6 @@ FIND_PACKAGE(Vulkan REQUIRED)
 INCLUDE(GNUInstallDirs)
 
 FILE(GLOB VKH_SRC src/*.c)
-if (VKH_ENABLE_VMA)
-       LIST(APPEND VKH_SRC src/VmaUsage.cpp)
-ENDIF()
 
 CONFIGURE_FILE(vkh.pc.in vkh.pc @ONLY)
 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/vkh.pc DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig)
@@ -94,22 +92,37 @@ ENDFUNCTION(setup_lib)
 
 GET_DIRECTORY_PROPERTY (vkh_has_root_project PARENT_DIRECTORY)
 
+if (VKH_ENABLE_VMA)
+       ADD_LIBRARY(libVMA OBJECT src/VmaUsage.cpp)
+       SET_PROPERTY(TARGET libVMA PROPERTY POSITION_INDEPENDENT_CODE ON)
+ENDIF()
+
+ADD_LIBRARY(vkh_obj OBJECT ${VKH_SRC})
+SET_PROPERTY(TARGET vkh_obj PROPERTY POSITION_INDEPENDENT_CODE ON)
+TARGET_INCLUDE_DIRECTORIES(vkh_obj
+        PRIVATE
+                ${CMAKE_CURRENT_SOURCE_DIR}/src
+        PUBLIC
+                ${CMAKE_CURRENT_SOURCE_DIR}/include
+                ${Vulkan_INCLUDE_DIRS}
+)
+
 IF (vkh_has_root_project)
        IF (VKH_BUILD_SHARED_LIBS)
-               ADD_LIBRARY("${PROJECT_NAME}" SHARED ${VKH_SRC})
+               ADD_LIBRARY("${PROJECT_NAME}" SHARED $<TARGET_OBJECTS:vkh_obj> $<TARGET_OBJECTS:libVMA>)
                TARGET_COMPILE_DEFINITIONS("${PROJECT_NAME}" PUBLIC -DVKH_SHARED_BUILD)
                setup_lib ("${PROJECT_NAME}")
        ELSE()
-               ADD_LIBRARY("${PROJECT_NAME}" STATIC ${VKH_SRC})
+               ADD_LIBRARY("${PROJECT_NAME}" STATIC $<TARGET_OBJECTS:vkh_obj> $<TARGET_OBJECTS:libVMA>)
                setup_lib ("${PROJECT_NAME}")
        ENDIF()
 ELSE()
-       ADD_LIBRARY("${PROJECT_NAME}_shared" SHARED ${VKH_SRC})
+       ADD_LIBRARY("${PROJECT_NAME}_shared" SHARED $<TARGET_OBJECTS:vkh_obj> $<TARGET_OBJECTS:libVMA>)
        SET_PROPERTY(TARGET "${PROJECT_NAME}_shared" PROPERTY POSITION_INDEPENDENT_CODE ON)
        TARGET_COMPILE_DEFINITIONS("${PROJECT_NAME}_shared" PUBLIC -DVKH_SHARED_BUILD)
        setup_lib ("${PROJECT_NAME}_shared")
 
-       ADD_LIBRARY("${PROJECT_NAME}_static" STATIC ${VKH_SRC})
+       ADD_LIBRARY("${PROJECT_NAME}_static" STATIC $<TARGET_OBJECTS:vkh_obj> $<TARGET_OBJECTS:libVMA>)
        target_compile_definitions("${PROJECT_NAME}_static" PUBLIC -DVKH_STATIC_BUILD)
        SET_PROPERTY(TARGET "${PROJECT_NAME}_static" PROPERTY POSITION_INDEPENDENT_CODE OFF)
        setup_lib ("${PROJECT_NAME}_static")