Skip to content

Commit da5514b

Browse files
committed
Added shared lib version
1 parent 127848f commit da5514b

File tree

4 files changed

+31
-27
lines changed

4 files changed

+31
-27
lines changed

CMakeLists.txt

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,32 @@ cmake_minimum_required(VERSION 3.2)
55
project(LibAPR)
66
set(CMAKE_CXX_STANDARD 14)
77

8+
# APR build options:
9+
option(APR_INSTALL "Install APR library" OFF)
10+
option(APR_BUILD_EXAMPLES "Build APR examples" OFF)
11+
option(APR_TESTS "Build APR tests" OFF)
12+
option(APR_PREFER_EXTERNAL_GTEST "When found, use the installed GTEST libs instead of included sources" OFF)
13+
option(APR_BUILD_JAVA_WRAPPERS "Build APR JAVA wrappers" OFF)
14+
15+
816
###############################################################################
917
# Generate configuration file
1018
###############################################################################
1119
set (APR_VERSION_MAJOR 1)
1220
set (APR_VERSION_MINOR 0)
1321
set (APR_VERSION_PATCH 0)
14-
execute_process(COMMAND git rev-parse HEAD
15-
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
16-
OUTPUT_VARIABLE APR_GIT_HASH)
22+
execute_process(COMMAND git rev-parse HEAD
23+
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
24+
OUTPUT_VARIABLE APR_GIT_HASH)
1725
string(REGEX REPLACE "\n$" "" APR_GIT_HASH "${APR_GIT_HASH}")
1826
configure_file (
1927
"${PROJECT_SOURCE_DIR}/src/ConfigAPR.h.in"
2028
"${PROJECT_BINARY_DIR}/ConfigAPR.h"
2129
)
2230
include_directories("${PROJECT_BINARY_DIR}")
31+
file(READ "${PROJECT_BINARY_DIR}/ConfigAPR.h" ConfigAPRcontent)
32+
string(REGEX REPLACE ".*APR_VERSION[ \t]+=[ \t]+\"([-0-9A-Za-z.]+)\".*" "\\1" APR_VERSION_STRING ${ConfigAPRcontent})
33+
message("Configuring for APR version: " ${APR_VERSION_STRING})
2334

2435
###############################################################################
2536
# Find all required libraries
@@ -52,6 +63,7 @@ include_directories(external/c-blosc/blosc)
5263
# Add submodule GLM (include files only)
5364
include_directories("external/glm")
5465

66+
5567
###############################################################################
5668
# Configure compiler options
5769
###############################################################################
@@ -69,37 +81,40 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
6981
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g")
7082
endif()
7183

84+
7285
###############################################################################
7386
# Generate APR library
7487
###############################################################################
7588

76-
include_directories(src)
7789
set(SOURCE_FILES src/io/blosc_filter.c src/io/hdf5functions_blosc.cpp)
7890
set(SOURCE_FILES_RAYCAST src/numerics/APRRaycaster.cpp src/vis/Camera.cpp src/vis/Object.cpp src/vis/RaytracedObject.cpp)
7991

8092
# generate static library used as a intermediate step in generating fat lib
8193
add_library(libapr_static STATIC ${SOURCE_FILES} ${SOURCE_FILES_RAYCAST})
8294
set_target_properties(libapr_static PROPERTIES OUTPUT_NAME apr)
83-
target_link_libraries(libapr_static INTERFACE blosc_static ${HDF5_LIBRARIES} ${TIFF_LIBRARIES})
95+
target_include_directories(libapr_static INTERFACE src)
8496

8597
# generate fat static library by adding dependencies
86-
include(external/AddStaticLibs.cmake)
98+
include(cmake/AddStaticLibs.cmake)
8799
addStaticLibs(libapr_static blosc_static)
88100

89101
# generate fat shared library
90102
add_library(libapr_dynamic SHARED ${SOURCE_FILES} ${SOURCE_FILES_RAYCAST})
91103
add_dependencies(libapr_dynamic blosc_static)
92104
set_target_properties(libapr_dynamic PROPERTIES OUTPUT_NAME apr)
105+
set_property(TARGET libapr_dynamic PROPERTY VERSION ${APR_VERSION_STRING})
106+
set_property(TARGET libapr_dynamic PROPERTY SOVERSION ${APR_VERSION_MAJOR})
107+
target_include_directories(libapr_dynamic INTERFACE src)
93108
target_link_libraries(libapr_dynamic PUBLIC ${HDF5_LIBRARIES} ${TIFF_LIBRARIES} -Wl,-force_load,$<TARGET_FILE:blosc_static>)
94109

110+
95111
###############################################################################
96112
# Install APR library
97113
###############################################################################
98-
option (APR_INSTALL "Install APR library" OFF)
99114
if(APR_INSTALL)
100115
message(STATUS "APR: Install library in [${CMAKE_INSTALL_PREFIX}]")
101-
install(FILES ${PROJECT_BINARY_DIR}/libapr.a DESTINATION lib COMPONENT LIB)
102-
# install(TARGETS libapr_dynamic DESTINATION lib COMPONENT LIB)
116+
install(TARGETS libapr_static DESTINATION lib COMPONENT LIB)
117+
# install(TARGETS libapr_dynamic DESTINATION lib COMPONENT LIB)
103118
install(DIRECTORY src/algorithm DESTINATION include/apr FILES_MATCHING PATTERN "*.hpp")
104119
install(DIRECTORY src/data_structures DESTINATION include/apr FILES_MATCHING PATTERN "*.hpp")
105120
install(DIRECTORY src/io DESTINATION include/apr FILES_MATCHING PATTERN "*.hpp" PATTERN "*.h")
@@ -108,29 +123,22 @@ if(APR_INSTALL)
108123
install(DIRECTORY src/vis DESTINATION include/apr FILES_MATCHING PATTERN "*.h")
109124
install(FILES ${PROJECT_BINARY_DIR}/ConfigAPR.h DESTINATION include/apr/io)
110125
install(FILES ${PROJECT_BINARY_DIR}/ConfigAPR.h DESTINATION include/apr)
111-
if(APR_BUILD_EXAMPLES)
112-
install(DIRECTORY ${PROJECT_BINARY_DIR}/examples/ DESTINATION bin
113-
FILES_MATCHING PATTERN "CMake*" EXCLUDE PATTERN "*make*" EXCLUDE PATTERN "*dSYM*" EXCLUDE PATTERN "Example_*"
114-
PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ
115-
)
116-
endif(APR_BUILD_EXAMPLES)
117126
endif(APR_INSTALL)
118127

128+
119129
###############################################################################
120130
# Examples
121131
###############################################################################
122-
option (APR_BUILD_EXAMPLES "Build APR examples" ON)
123132
if(APR_BUILD_EXAMPLES)
124133
message(STATUS "APR: Building examples")
125134
add_subdirectory(examples)
126135
endif(APR_BUILD_EXAMPLES)
127136

137+
128138
###############################################################################
129139
# Tests
130140
###############################################################################
131-
option (APR_TESTS "Build tests wrappers" OFF)
132141
if(APR_TESTS)
133-
option(APR_PREFER_EXTERNAL_GTEST "Find and use external GTEST library instead of included sources." OFF)
134142
message(STATUS "APR: Building tests")
135143
if(APR_PREFER_EXTERNAL_GTEST)
136144
find_package(GTest 1.8.0)
@@ -148,10 +156,10 @@ if(APR_TESTS)
148156
add_subdirectory(test)
149157
endif(APR_TESTS)
150158

159+
151160
###############################################################################
152161
# JAVA wrappers
153162
###############################################################################
154-
option (APR_BUILD_JAVA_WRAPPERS "Build JAVA wrappers" OFF)
155163
if(APR_BUILD_JAVA_WRAPPERS)
156164
message(STATUS "APR: Building JAVA wrappers")
157165
find_package(SWIG 3.0 REQUIRED)

examples/Example_get_apr.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ cmdLineOptions read_command_line_options(int argc, char **argv){
134134

135135
if(argc == 1) {
136136
std::cerr << argv[0] << std::endl;
137-
std::cerr << "APR version " << ConfigAPR::getVersionString() << std::endl;
137+
std::cerr << "APR version " << ConfigAPR::APR_VERSION << std::endl;
138138
std::cerr << "Short usage: \"" << argv[0] << " -i inputfile [-d directory] [-o outputfile]\"" << std::endl;
139139

140140
std::cerr << usage << std::endl;

src/ConfigAPR.h.in

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,13 @@
77
#define CONFIG_APR_H
88

99

10-
#include <string>
11-
1210
namespace ConfigAPR {
1311
const unsigned int APR_VERSION_MAJOR = @APR_VERSION_MAJOR@;
1412
const unsigned int APR_VERSION_MINOR = @APR_VERSION_MINOR@;
1513
const unsigned int APR_VERSION_PATCH = @APR_VERSION_PATCH@;
16-
const std::string APR_GIT_HASH = "@APR_GIT_HASH@";
17-
18-
static constexpr auto getVersionString() {
19-
return "@APR_VERSION_MAJOR@.@APR_VERSION_MINOR@.@APR_VERSION_PATCH@";
20-
}
14+
const char * const APR_GIT_HASH = "@APR_GIT_HASH@";
15+
// do not change name of this variable unless you do same in CmakeLists.txt
16+
const char * const APR_VERSION = "@APR_VERSION_MAJOR@.@APR_VERSION_MINOR@.@APR_VERSION_PATCH@";
2117
}
2218

2319
#endif

0 commit comments

Comments
 (0)