Edit CMakeLists.txt to use modern CMake
This commit is contained in:
parent
65be9827ce
commit
f0c7ee12ba
|
@ -2,7 +2,7 @@
|
||||||
cmake_minimum_required(VERSION 3.8)
|
cmake_minimum_required(VERSION 3.8)
|
||||||
|
|
||||||
# Project configuration
|
# Project configuration
|
||||||
project(REACTPHYSICS3D LANGUAGES CXX)
|
project(ReactPhysics3D VERSION 0.7.1 LANGUAGES CXX)
|
||||||
|
|
||||||
# In order to install libraries into correct locations on all platforms.
|
# In order to install libraries into correct locations on all platforms.
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
|
@ -245,6 +245,10 @@ set (REACTPHYSICS3D_SOURCES
|
||||||
# Create the library
|
# Create the library
|
||||||
add_library(reactphysics3d ${REACTPHYSICS3D_HEADERS} ${REACTPHYSICS3D_SOURCES})
|
add_library(reactphysics3d ${REACTPHYSICS3D_HEADERS} ${REACTPHYSICS3D_SOURCES})
|
||||||
|
|
||||||
|
# Creates an Alias Target, such that "ReactPhysics3D::reactphysics3d" can be used
|
||||||
|
# to refer to "reactphysics3d" in subsequent commands
|
||||||
|
add_library(ReactPhysics3D::reactphysics3d ALIAS reactphysics3d)
|
||||||
|
|
||||||
# C++11 compiler features
|
# C++11 compiler features
|
||||||
target_compile_features(reactphysics3d PUBLIC cxx_std_11)
|
target_compile_features(reactphysics3d PUBLIC cxx_std_11)
|
||||||
set_target_properties(reactphysics3d PROPERTIES CXX_EXTENSIONS OFF)
|
set_target_properties(reactphysics3d PROPERTIES CXX_EXTENSIONS OFF)
|
||||||
|
@ -252,7 +256,7 @@ set_target_properties(reactphysics3d PROPERTIES CXX_EXTENSIONS OFF)
|
||||||
# Compile with warning messages
|
# Compile with warning messages
|
||||||
target_compile_options(reactphysics3d PRIVATE -Wall)
|
target_compile_options(reactphysics3d PRIVATE -Wall)
|
||||||
|
|
||||||
# Headers
|
# Library headers
|
||||||
target_include_directories(reactphysics3d PUBLIC
|
target_include_directories(reactphysics3d PUBLIC
|
||||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
||||||
$<INSTALL_INTERFACE:include>
|
$<INSTALL_INTERFACE:include>
|
||||||
|
@ -286,10 +290,43 @@ set_target_properties(reactphysics3d PROPERTIES
|
||||||
|
|
||||||
# Install target (install library only, not headers)
|
# Install target (install library only, not headers)
|
||||||
install(TARGETS reactphysics3d
|
install(TARGETS reactphysics3d
|
||||||
|
EXPORT reactphysics3d-targets
|
||||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
)
|
)
|
||||||
|
|
||||||
# Install the headers separately (because INSTALL(TARGETS ... PUBLIC_HEADER DESTINATION ...) does not support subfolders
|
# Install the headers separately (because INSTALL(TARGETS ... PUBLIC_HEADER DESTINATION ...) does
|
||||||
|
# not support subfolders
|
||||||
install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||||
|
|
||||||
|
# This is required so that the exported target has the name JSONUtils and not jsonutils
|
||||||
|
set_target_properties(reactphysics3d PROPERTIES EXPORT_NAME ReactPhysics3D)
|
||||||
|
|
||||||
|
# Give CMake access to the version number of the library so that the user is able to use the find_package() function
|
||||||
|
# with a given version number to select the version of the library he/she wants to use. This will create a
|
||||||
|
# "ReactPhysics3DConfigVersion.cmake" file that will later be copied into the install destination folder (see below)
|
||||||
|
include(CMakePackageConfigHelpers)
|
||||||
|
write_basic_package_version_file(
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/ReactPhysics3DConfigVersion.cmake
|
||||||
|
VERSION ${PROJECT_VERSION}
|
||||||
|
COMPATIBILITY AnyNewerVersion
|
||||||
|
)
|
||||||
|
|
||||||
|
# When the user runs "make install", this will export the targets into
|
||||||
|
# a "ReactPhysics3DConfig.cmake" file in the install destination
|
||||||
|
install(EXPORT reactphysics3d-targets
|
||||||
|
FILE
|
||||||
|
ReactPhysics3DConfig.cmake
|
||||||
|
NAMESPACE
|
||||||
|
ReactPhysics3D::
|
||||||
|
DESTINATION
|
||||||
|
${CMAKE_INSTALL_LIBDIR}/cmake/ReactPhysics3D
|
||||||
|
)
|
||||||
|
|
||||||
|
# When the user runs "make install", this will copy the "ReactPhysics3DConfigVersion.cmake" file
|
||||||
|
# we have previously created into the install destination
|
||||||
|
install(FILES
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/ReactPhysics3DConfigVersion.cmake
|
||||||
|
DESTINATION lib/cmake/ReactPhysics3D
|
||||||
|
)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user