File CMakeLists.txt changed (mode: 100644) (index 74d48f7..45b58e2) |
1 |
1 |
cmake_minimum_required(VERSION 3.5) |
cmake_minimum_required(VERSION 3.5) |
2 |
2 |
project(JRF |
project(JRF |
3 |
3 |
DESCRIPTION "Containers and various formats utility" |
DESCRIPTION "Containers and various formats utility" |
4 |
|
VERSION 0.1.1 |
|
|
4 |
|
VERSION 0.2.0 |
5 |
5 |
LANGUAGES CXX |
LANGUAGES CXX |
6 |
6 |
) |
) |
7 |
|
set(JRF_VERSION_MAJOR ${PROJECT_VERSION_MAJOR} PARENT_SCOPE) |
|
8 |
|
set(JRF_VERSION_MINOR ${PROJECT_VERSION_MINOR} PARENT_SCOPE) |
|
9 |
|
set(JRF_VERSION_PATCH ${PROJECT_VERSION_PATCH} PARENT_SCOPE) |
|
10 |
|
set(JRF_VERSION ${PROJECT_VERSION} PARENT_SCOPE) |
|
11 |
|
set(JRF_NAME ${PROJECT_NAME} PARENT_SCOPE) |
|
12 |
|
set(JRF_DESCRIPTION ${PROJECT_DESCRIPTION} PARENT_SCOPE) |
|
13 |
|
set(JRF_VERSION_NUMBER 1) |
|
14 |
|
add_library(JRF STATIC src/result.cpp src/convert.cpp) |
|
15 |
|
target_include_directories(JRF PUBLIC |
|
16 |
|
${CMAKE_CURRENT_SOURCE_DIR}/include |
|
17 |
|
${LIBZIP_INCLUDE_DIR} |
|
18 |
|
) |
|
19 |
|
target_link_libraries(JRF jlib ${LIBZIP_INCLUDE_LIBS}) |
|
20 |
|
target_compile_features(JRF PUBLIC cxx_std_17) |
|
21 |
|
string(LENGTH "${CMAKE_SOURCE_DIR}/" SOURCE_PATH_SIZE) |
|
22 |
|
target_compile_definitions(JRF |
|
|
7 |
|
find_package(jlib 0.2.0 REQUIRED) |
|
8 |
|
find_library(ZIP_LIB NAMES libzip libzip.so) |
|
9 |
|
|
|
10 |
|
set(JRF_CONTAINER_VERSION_NUMBER 1) |
|
11 |
|
|
|
12 |
|
add_library(jrf STATIC |
|
13 |
|
src/result.cpp |
|
14 |
|
src/convert.cpp |
|
15 |
|
) |
|
16 |
|
set(INCLUDE_FILES |
|
17 |
|
result.h |
|
18 |
|
mesh.h |
|
19 |
|
image.h |
|
20 |
|
model.h |
|
21 |
|
scene.h |
|
22 |
|
jrf.h |
|
23 |
|
convert.h |
|
24 |
|
read.h |
|
25 |
|
write.h |
|
26 |
|
zip.h |
|
27 |
|
) |
|
28 |
|
list(TRANSFORM INCLUDE_FILES PREPEND jrf/) |
|
29 |
|
|
|
30 |
|
set(EXPORT_NAME jrf-${PROJECT_VERSION}) |
|
31 |
|
|
|
32 |
|
target_include_directories(jrf PUBLIC |
|
33 |
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> |
|
34 |
|
$<INSTALL_INTERFACE:include/${EXPORT_NAME}> |
|
35 |
|
) |
|
36 |
|
target_link_libraries(jrf PUBLIC jlib ${ZIP_LIB}) |
|
37 |
|
target_compile_features(jrf PUBLIC cxx_std_17) |
|
38 |
|
|
|
39 |
|
target_compile_definitions(jrf |
23 |
40 |
PUBLIC |
PUBLIC |
24 |
41 |
JRF_NAME="${PROJECT_NAME}" |
JRF_NAME="${PROJECT_NAME}" |
25 |
42 |
JRF_VERSION_MAJOR=${PROJECT_VERSION_MAJOR} |
JRF_VERSION_MAJOR=${PROJECT_VERSION_MAJOR} |
26 |
43 |
JRF_VERSION_MINOR=${PROJECT_VERSION_MINOR} |
JRF_VERSION_MINOR=${PROJECT_VERSION_MINOR} |
27 |
44 |
JRF_VERSION_PATCH=${PROJECT_VERSION_PATCH} |
JRF_VERSION_PATCH=${PROJECT_VERSION_PATCH} |
28 |
45 |
JRF_VERSION=${PROJECT_VERSION} |
JRF_VERSION=${PROJECT_VERSION} |
29 |
|
JRF_VERSION_NUMBER=${JRF_VERSION_NUMBER} |
|
30 |
|
PRIVATE |
|
31 |
|
SOURCE_PATH_SIZE=${SOURCE_PATH_SIZE} |
|
|
46 |
|
JRF_CONTAINER_VERSION_NUMBER=${JRF_CONTAINER_VERSION_NUMBER} |
|
47 |
|
) |
|
48 |
|
|
|
49 |
|
option(JRF_NATIVE "Enable non-portable compiling optimizations" ON) |
|
50 |
|
if (JRF_NATIVE) |
|
51 |
|
target_compile_options(jrf PRIVATE -march=native) |
|
52 |
|
message(STATUS "Compiling for native arch!") |
|
53 |
|
endif() |
|
54 |
|
|
|
55 |
|
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" |
|
56 |
|
OR |
|
57 |
|
CMAKE_CXX_COMPILER_ID STREQUAL "GCC") |
|
58 |
|
target_compile_options(jrf PRIVATE -fno-exceptions -fno-rtti -ffast-math) |
|
59 |
|
endif() |
|
60 |
|
|
|
61 |
|
option(JRF_LTO "Enable LTO" ON) |
|
62 |
|
if (JRF_LTO AND CMAKE_BUILD_TYPE STREQUAL Release) |
|
63 |
|
set_property(TARGET jrf APPEND_STRING PROPERTY LINK_FLAGS -flto) |
|
64 |
|
target_compile_options(jrf PRIVATE -flto) |
|
65 |
|
message(STATUS "LTO is enabled") |
|
66 |
|
endif() |
|
67 |
|
|
|
68 |
|
set(INSTALL_DIR include/${EXPORT_NAME}) |
|
69 |
|
foreach(FILE ${INCLUDE_FILES}) |
|
70 |
|
get_filename_component(DIR_PATH ${FILE} DIRECTORY) |
|
71 |
|
install(FILES include/${FILE} DESTINATION ${INSTALL_DIR}/${DIR_PATH} ) |
|
72 |
|
endforeach() |
|
73 |
|
|
|
74 |
|
configure_file(version.cmake.in |
|
75 |
|
${CMAKE_CURRENT_BINARY_DIR}/version.cmake |
|
76 |
|
@ONLY |
|
77 |
|
) |
|
78 |
|
set_target_properties(jrf PROPERTIES |
|
79 |
|
SUFFIX .so.${PROJECT_VERSION} |
|
80 |
|
DEBUG_POSTFIX d |
|
81 |
|
) |
|
82 |
|
install(TARGETS jrf |
|
83 |
|
DESTINATION lib |
|
84 |
|
EXPORT jrf-config |
|
85 |
|
PUBLIC_HEADER DESTINATION include/${EXPORT_NAME} |
|
86 |
|
) |
|
87 |
|
install(EXPORT jrf-config |
|
88 |
|
DESTINATION cmake/${EXPORT_NAME} |
|
89 |
|
) |
|
90 |
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/version.cmake |
|
91 |
|
DESTINATION cmake/${EXPORT_NAME} |
|
92 |
|
RENAME jrf-config-version.cmake |
32 |
93 |
) |
) |