diff options
| author | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2022-06-06 18:52:20 +0200 |
|---|---|---|
| committer | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2022-06-06 18:52:20 +0200 |
| commit | 5ce5386f0a0f46b36ec42dd046ef56030ab7a496 (patch) | |
| tree | 1356852f111b8160392d1ef6039d1b1e276fe315 /CMakeLists.txt | |
| parent | 677a3547d5a930494177aeb4f9e802922dc975c3 (diff) | |
try to fix dll compilation on winwin_compilation
Diffstat (limited to 'CMakeLists.txt')
| -rw-r--r-- | CMakeLists.txt | 161 |
1 files changed, 75 insertions, 86 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 5d6ddd0..7fdf0e9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,29 +20,29 @@ IF (CYGWIN) ENDIF() if (CMAKE_BUILD_TYPE STREQUAL "Debug") - ADD_DEFINITIONS (-DDEBUG) - OPTION(ENABLE_VALIDATION "enable vulkan validation layer" ON) - IF (UNIX) - ADD_COMPILE_OPTIONS(-Wall -Wno-extra -Wno-unknown-pragmas) - ELSEIF (MSVC) - ADD_COMPILE_OPTIONS(/W4 /wd4204 /wd4221 /wd4100) - ENDIF() + ADD_DEFINITIONS (-DDEBUG) + OPTION(ENABLE_VALIDATION "enable vulkan validation layer" ON) + IF (UNIX) + ADD_COMPILE_OPTIONS(-Wall -Wno-extra -Wno-unknown-pragmas) + ELSEIF (MSVC) + ADD_COMPILE_OPTIONS(/W4 /wd4204 /wd4221 /wd4100) + ENDIF() ELSE() - UNSET(ENABLE_VALIDATION CACHE) - IF (UNIX) - ADD_COMPILE_OPTIONS(-w -fvisibility=hidden) - #ADD_COMPILE_OPTIONS(-flto) - ELSEIF(MSVC) - ADD_COMPILE_OPTIONS(/W0) - IF (${LANG} EQUAL "C" AND MSVC) - ADD_COMPILE_OPTIONS(/TC) - ENDIF () - ENDIF() + UNSET(ENABLE_VALIDATION CACHE) + IF (UNIX) + ADD_COMPILE_OPTIONS(-w -fvisibility=hidden) + #ADD_COMPILE_OPTIONS(-flto) + ELSEIF(MSVC) + ADD_COMPILE_OPTIONS(/W0) + IF (${LANG} EQUAL "C" AND MSVC) + ADD_COMPILE_OPTIONS(/TC) + ENDIF () + ENDIF() ENDIF() IF (ENABLE_VALIDATION) - ADD_DEFINITIONS (-DVKH_USE_VALIDATION) + ADD_DEFINITIONS (-DVKH_USE_VALIDATION) ENDIF () FIND_PACKAGE(Vulkan REQUIRED) @@ -56,81 +56,70 @@ CONFIGURE_FILE(vkh.pc.in vkh.pc @ONLY) INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/vkh.pc DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig) FUNCTION (setup_lib LibName) - SET_TARGET_PROPERTIES("${LibName}" PROPERTIES - OUTPUT_NAME ${PROJECT_NAME} - VERSION ${PROJECT_VERSION} - SOVERSION 1 - C_STANDARD 11 - C_EXTENSIONS OFF - PUBLIC_HEADER include/vkh.h - ) - TARGET_INCLUDE_DIRECTORIES("${LibName}" - PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/src - PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR}/include - ${Vulkan_INCLUDE_DIRS} - ) - TARGET_LINK_LIBRARIES("${LibName}" - PUBLIC - ${Vulkan_LIBRARIES} - Threads::Threads - ) - INSTALL(TARGETS "${LibName}" - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + SET_TARGET_PROPERTIES("${LibName}" PROPERTIES + OUTPUT_NAME ${PROJECT_NAME} + VERSION ${PROJECT_VERSION} + SOVERSION 1 + C_STANDARD 11 + C_EXTENSIONS OFF + PUBLIC_HEADER include/vkh.h + ) + TARGET_INCLUDE_DIRECTORIES("${LibName}" + PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/src + PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR}/include + ${Vulkan_INCLUDE_DIRS} + ) + TARGET_LINK_LIBRARIES("${LibName}" + PUBLIC + ${Vulkan_LIBRARIES} + Threads::Threads + ) + INSTALL(TARGETS "${LibName}" + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) ENDFUNCTION(setup_lib) GET_DIRECTORY_PROPERTY (vkh_has_root_project PARENT_DIRECTORY) if (VKH_USE_VMA) - ADD_DEFINITIONS (-DVKH_USE_VMA) - SET(VKH_USE_VMA ON PARENT_SCOPE) - ADD_LIBRARY(libVMA OBJECT src/VmaUsage.cpp) - SET_TARGET_PROPERTIES( - libVMA PROPERTIES - POSITION_INDEPENDENT_CODE ON - LINKER_LANGUAGE CXX - ) - TARGET_INCLUDE_DIRECTORIES(libVMA - PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR}/include - ${Vulkan_INCLUDE_DIRS} - ) - SET (VKH_LIB_SRC $<TARGET_OBJECTS:vkh_obj> $<TARGET_OBJECTS:libVMA>) -ELSE() - SET (VKH_LIB_SRC $<TARGET_OBJECTS:vkh_obj>) + ADD_DEFINITIONS (-DVKH_USE_VMA) + SET(VKH_USE_VMA ON PARENT_SCOPE) + ADD_LIBRARY(libVMA OBJECT src/VmaUsage.cpp) + SET_TARGET_PROPERTIES( + libVMA PROPERTIES + POSITION_INDEPENDENT_CODE ON + LINKER_LANGUAGE CXX + ) + TARGET_INCLUDE_DIRECTORIES(libVMA + PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR}/include + ${Vulkan_INCLUDE_DIRS} + ) + LIST (APPEND VKH_SRC $<TARGET_OBJECTS:libVMA>) 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_LIB_SRC}) - TARGET_COMPILE_DEFINITIONS("${PROJECT_NAME}" PUBLIC -DVKH_SHARED_BUILD) - setup_lib ("${PROJECT_NAME}") - ELSE() - ADD_LIBRARY("${PROJECT_NAME}" STATIC ${VKH_LIB_SRC}) - setup_lib ("${PROJECT_NAME}") - ENDIF() + IF (VKH_BUILD_SHARED_LIBS) + ADD_LIBRARY("${PROJECT_NAME}" SHARED ${VKH_SRC}) + SET_PROPERTY(TARGET "${PROJECT_NAME}" PROPERTY POSITION_INDEPENDENT_CODE ON) + TARGET_COMPILE_DEFINITIONS("${PROJECT_NAME}" PUBLIC -DVKH_SHARED_LINKING) + setup_lib ("${PROJECT_NAME}") + ELSE() + ADD_LIBRARY("${PROJECT_NAME}" STATIC ${VKH_SRC}) + SET_PROPERTY(TARGET "${PROJECT_NAME}" PROPERTY POSITION_INDEPENDENT_CODE OFF) + setup_lib ("${PROJECT_NAME}") + ENDIF() ELSE() - ADD_LIBRARY("${PROJECT_NAME}_shared" SHARED ${VKH_LIB_SRC}) - 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_LIB_SRC}) - 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") + ADD_LIBRARY("${PROJECT_NAME}_shared" SHARED ${VKH_SRC}) + TARGET_COMPILE_DEFINITIONS("${PROJECT_NAME}_shared" PUBLIC -DVKH_SHARED_BUILD) + SET_PROPERTY(TARGET "${PROJECT_NAME}_shared" PROPERTY POSITION_INDEPENDENT_CODE ON) + setup_lib ("${PROJECT_NAME}_shared") + ADD_LIBRARY("${PROJECT_NAME}_static" STATIC ${VKH_SRC}) + 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") ENDIF() |