Skip to content

Commit 609ee1c

Browse files
FabeleAltranpmai
authored andcommitted
OSI V3 correct cmake version check and install (#217)
* Providing cmake configuration that allows simultaneous usage of the versions 2.x and 3.x. Incrementing version at patch level: From 3.0.0 to 3.0.1 Major fix is the consideration of the major version within the find_package file due to the break of compatibility from 2.x to 3.x.
1 parent bf83f06 commit 609ee1c

File tree

2 files changed

+48
-21
lines changed

2 files changed

+48
-21
lines changed

CMakeLists.txt

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,37 +8,41 @@ if(EXISTS "${CMAKE_SOURCE_DIR}/.git")
88
set(default_build_type "Debug")
99
endif()
1010

11+
# read the version number from the file "VERSION"
12+
file(STRINGS "VERSION" VERSION_CONTENTS)
13+
foreach(LINE ${VERSION_CONTENTS})
14+
string(REGEX REPLACE " |\t" "" LINE ${LINE})
15+
string(REGEX MATCH "^[^=]+" VERSION_NAME ${LINE})
16+
string(REPLACE "${VERSION_NAME}=" "" VERSION_VALUE ${LINE})
17+
set(${VERSION_NAME} "${VERSION_VALUE}")
18+
endforeach()
19+
set(OPEN_SIMULATION_INTERFACE_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH})
20+
21+
set(${PROJECT_NAME}_SOVERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
22+
set(${PROJECT_NAME}_LIBVERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
23+
24+
# configure build version
1125
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
1226
message(STATUS "Setting build type to '${default_build_type}' as none was specified.")
1327
set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE
1428
STRING "Choose the type of build." FORCE)
1529
# Set the possible values of build type for cmake-gui
1630
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
17-
"Debug" "Release" "MinSizeRel" "RelWithDebInfo")
31+
"Debug" "Release" "MinSizeRel" "RelWithDebInfo")
1832
endif()
1933

2034
# Offer the user the choice of overriding the installation directories
2135
set(INSTALL_LIB_DIR lib CACHE PATH "Installation directory for libraries")
2236
set(INSTALL_INCLUDE_DIR include CACHE PATH "Installation directory for header files")
2337

2438
if(WIN32 AND NOT CYGWIN)
25-
set(DEF_INSTALL_CMAKE_DIR CMake)
39+
set(DEF_INSTALL_CMAKE_DIR CMake/${PROJECT_NAME}-${VERSION_MAJOR})
2640
else()
27-
set(DEF_INSTALL_CMAKE_DIR lib/cmake/${PROJECT_NAME})
41+
set(DEF_INSTALL_CMAKE_DIR lib/cmake/${PROJECT_NAME}-${VERSION_MAJOR})
2842
endif()
2943
set(INSTALL_CMAKE_DIR ${DEF_INSTALL_CMAKE_DIR} CACHE PATH
3044
"Installation directory for CMake files")
3145

32-
# read the version number from the file "VERSION"
33-
file(STRINGS "VERSION" VERSION_CONTENTS)
34-
foreach(LINE ${VERSION_CONTENTS})
35-
string(REGEX REPLACE " |\t" "" LINE ${LINE})
36-
string(REGEX MATCH "^[^=]+" VERSION_NAME ${LINE})
37-
string(REPLACE "${VERSION_NAME}=" "" VERSION_VALUE ${LINE})
38-
set(${VERSION_NAME} "${VERSION_VALUE}")
39-
endforeach()
40-
set(OPEN_SIMULATION_INTERFACE_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH})
41-
4246
set(INSTALL_LIB_DIR ${INSTALL_LIB_DIR}/osi${VERSION_MAJOR})
4347
set(INSTALL_INCLUDE_DIR ${INSTALL_INCLUDE_DIR}/osi${VERSION_MAJOR})
4448

@@ -99,14 +103,17 @@ set_property(TARGET ${PROJECT_NAME}_obj PROPERTY POSITION_INDEPENDENT_CODE ON)
99103

100104

101105
add_library(${PROJECT_NAME}_pic STATIC $<TARGET_OBJECTS:${PROJECT_NAME}_obj>)
106+
102107
target_include_directories(${PROJECT_NAME}_pic
103108
PUBLIC
104109
${PROTOBUF_INCLUDE_DIR}
105110
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
106111
$<INSTALL_INTERFACE:${INSTALL_INCLUDE_DIR}>
107112
)
108113
target_link_libraries(${PROJECT_NAME}_pic PUBLIC ${PROTOBUF_LIBRARY})
114+
109115
set_property(TARGET ${PROJECT_NAME}_pic PROPERTY POSITION_INDEPENDENT_CODE ON)
116+
110117
install(TARGETS ${PROJECT_NAME}_pic
111118
EXPORT ${PROJECT_NAME}_targets
112119
ARCHIVE DESTINATION "${INSTALL_LIB_DIR}" COMPONENT lib)
@@ -118,6 +125,16 @@ target_include_directories(${PROJECT_NAME}
118125
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
119126
$<INSTALL_INTERFACE:${INSTALL_INCLUDE_DIR}>
120127
)
128+
129+
set_property(
130+
TARGET ${PROJECT_NAME}
131+
PROPERTY SOVERSION ${${PROJECT_NAME}_SOVERSION}
132+
)
133+
set_property(
134+
TARGET ${PROJECT_NAME}
135+
PROPERTY VERSION ${${PROJECT_NAME}_LIBVERSION}
136+
)
137+
121138
target_link_libraries(${PROJECT_NAME} PUBLIC ${PROTOBUF_LIBRARY})
122139
install(TARGETS ${PROJECT_NAME}
123140
EXPORT ${PROJECT_NAME}_targets
Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,21 @@
1-
set(PACKAGE_VERSION "@OPEN_SIMULATION_INTERFACE_VERSION@")
21

3-
# Check whether the requested PACKAGE_FIND_VERSION is compatible
4-
if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
5-
set(PACKAGE_VERSION_COMPATIBLE FALSE)
2+
set(PACKAGE_VERSION_MAJOR "@VERSION_MAJOR@")
3+
4+
set(PACKAGE_VERSION "@OPEN_SIMULATION_INTERFACE_VERSION@")
5+
if("${PACKAGE_FIND_VERSION}" VERSION_EQUAL "0")
6+
message(FATAL_ERROR "Please select at least the major version you want to use!")
67
else()
7-
set(PACKAGE_VERSION_COMPATIBLE TRUE)
8-
if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")
9-
set(PACKAGE_VERSION_EXACT TRUE)
8+
# Check whether the requested PACKAGE_FIND_VERSION is compatible
9+
if("${PACKAGE_VERSION_MAJOR}" VERSION_EQUAL "${PACKAGE_FIND_VERSION_MAJOR}")
10+
if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
11+
set(PACKAGE_VERSION_COMPATIBLE FALSE)
12+
else()
13+
set(PACKAGE_VERSION_COMPATIBLE TRUE)
14+
if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")
15+
set(PACKAGE_VERSION_EXACT TRUE)
16+
endif()
1017
endif()
11-
endif()
18+
else()
19+
set(PACKAGE_VERSION_COMPATIBLE FALSE)
20+
endif()
21+
endif()

0 commit comments

Comments
 (0)