diff --git a/CMakeLists.txt b/CMakeLists.txt index 23f868fd..ef67f42e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -104,7 +104,8 @@ endif() source_group(${PROJECT_NAME} REGULAR_EXPRESSION DirectXMesh/*.*) target_include_directories(${PROJECT_NAME} PUBLIC - $ + $) +target_include_directories(${PROJECT_NAME} SYSTEM INTERFACE $) target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_11) @@ -127,13 +128,17 @@ endif() if(directxmath_FOUND) message(STATUS "Using DirectXMath package") - target_link_libraries(${PROJECT_NAME} PRIVATE Microsoft::DirectXMath) + if((NOT MINGW) AND WIN32) + target_link_libraries(${PROJECT_NAME} PRIVATE Microsoft::DirectXMath) + endif() endif() if(directx-headers_FOUND) message(STATUS "Using DirectX-Headers package") - target_link_libraries(${PROJECT_NAME} PRIVATE Microsoft::DirectX-Headers) - target_compile_definitions(${PROJECT_NAME} PRIVATE USING_DIRECTX_HEADERS) + if((NOT MINGW) AND WIN32) + target_link_libraries(${PROJECT_NAME} PRIVATE Microsoft::DirectX-Headers) + target_compile_definitions(${PROJECT_NAME} PRIVATE USING_DIRECTX_HEADERS) + endif() endif() #--- Utilities @@ -146,7 +151,8 @@ add_library(Utilities INTERFACE) source_group(Utilities REGULAR_EXPRESSION Utilities/*.*) target_include_directories(Utilities INTERFACE - $ + $) +target_include_directories(Utilities SYSTEM INTERFACE $) #--- Package @@ -167,10 +173,9 @@ install(TARGETS ${PROJECT_NAME} COMPONENT library) # Create pkg-config file -include(build/JoinPaths.cmake) # from: https://github.com/jtojnar/cmake-snips#concatenating-paths-when-building-pkg-config-files -join_paths(DIRECTXMESH_INCLUDEDIR_FOR_PKG_CONFIG "\${prefix}" "${CMAKE_INSTALL_INCLUDEDIR}") -join_paths(DIRECTXMESH_LIBDIR_FOR_PKG_CONFIG "\${prefix}" "${CMAKE_INSTALL_LIBDIR}") +cmake_path(APPEND DIRECTXMESH_INCLUDEDIR_FOR_PKG_CONFIG "\${prefix}" "${CMAKE_INSTALL_INCLUDEDIR}") +cmake_path(APPEND DIRECTXMESH_LIBDIR_FOR_PKG_CONFIG "\${prefix}" "${CMAKE_INSTALL_LIBDIR}") set(DIRECTXMESH_DEP_L "") if(directxmath_FOUND) @@ -225,6 +230,8 @@ install(FILES DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PACKAGE_NAME}) #--- Command-line tool +set(TOOL_EXES "") + if(BUILD_TOOLS AND WIN32) set(TOOL_EXES meshconvert) @@ -284,8 +291,6 @@ elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU") target_compile_options(${t} PRIVATE "-Wno-attributes") endif() endforeach() -elseif(CMAKE_CXX_COMPILER_ID MATCHES "Intel") - set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 14) elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") if(ENABLE_CODE_ANALYSIS) message(STATUS "Building with Code Analysis (PREFIX)") @@ -322,6 +327,7 @@ elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") endforeach() if(BUILD_FUZZING AND (NOT WINDOWS_STORE)) + # Prevent fuzzing builds (which is otherwise configured as a Release mode) from disabling assertions string(REPLACE "/DNDEBUG" "" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE}) string(REPLACE "/DNDEBUG" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}) @@ -335,7 +341,7 @@ elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") endif() if(WIN32) - if(BUILD_DX12 OR (${DIRECTX_ARCH} MATCHES "^arm64")) + if(BUILD_DX12 OR (DIRECTX_ARCH MATCHES "^arm64")) message(STATUS "Building with DirectX 12 Runtime support") set(WINVER 0x0A00) else() @@ -354,7 +360,7 @@ if(WIN32) endif() endif() -if(BUILD_TOOLS AND WIN32) +if(BUILD_TOOLS AND WIN32 AND (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)) set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT meshconvert) endif() diff --git a/build/JoinPaths.cmake b/build/JoinPaths.cmake deleted file mode 100644 index c68d91b8..00000000 --- a/build/JoinPaths.cmake +++ /dev/null @@ -1,23 +0,0 @@ -# This module provides function for joining paths -# known from most languages -# -# SPDX-License-Identifier: (MIT OR CC0-1.0) -# Copyright 2020 Jan Tojnar -# https://github.com/jtojnar/cmake-snips -# -# Modelled after Python’s os.path.join -# https://docs.python.org/3.7/library/os.path.html#os.path.join -# Windows not supported -function(join_paths joined_path first_path_segment) - set(temp_path "${first_path_segment}") - foreach(current_segment IN LISTS ARGN) - if(NOT ("${current_segment}" STREQUAL "")) - if(IS_ABSOLUTE "${current_segment}") - set(temp_path "${current_segment}") - else() - set(temp_path "${temp_path}/${current_segment}") - endif() - endif() - endforeach() - set(${joined_path} "${temp_path}" PARENT_SCOPE) -endfunction()