Skip to content

Commit 3290618

Browse files
committed
better cmake
1 parent d878f70 commit 3290618

File tree

3 files changed

+59
-37
lines changed

3 files changed

+59
-37
lines changed

CMakeLists.txt

+53-12
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
cmake_minimum_required(VERSION 3.1)
1+
cmake_minimum_required(VERSION 3.11)
22

33
project(
44
Geodesy
@@ -9,20 +9,61 @@ project(
99
# We need Eigen
1010
find_package(Eigen3 3.3 REQUIRED)
1111

12-
# The library
13-
add_subdirectory(src)
14-
15-
# The tests
1612
include(CTest)
17-
add_subdirectory(test//unit_tests)
13+
add_subdirectory(test/unit_tests)
1814
enable_testing()
1915

20-
add_compile_options(
21-
-Wall -Wextra -Werror -pedantic -W -Wshadow -march=native -DEIGEN_NO_AUTOMATIC_RESIZING
22-
$<$<CONFIG:RELEASE>:-O2 -march=native -DEIGEN_NO_AUTOMATIC_RESIZING>
23-
$<$<CONFIG:DEBUG>:-g -pg -Wdisabled-optimization -DDEBUG>
24-
)
25-
2616
set(CMAKE_CXX_STANDARD 17)
2717
set(CMAKE_CXX_STANDARD_REQUIRED On)
2818
set(CMAKE_CXX_EXTENSIONS Off)
19+
add_compile_options(-Wall
20+
-Wextra
21+
-Werror
22+
-pedantic
23+
-W
24+
-Wshadow
25+
$<$<CONFIG:Release>:-O2>
26+
$<$<CONFIG:Release>:-march=native>
27+
$<$<CONFIG:Debug>:-g>
28+
$<$<CONFIG:Debug>:-pg>
29+
$<$<CONFIG:Debug>:-Wdisabled-optimization>
30+
)
31+
add_compile_definitions(
32+
$<$<CONFIG:Debug>:DEBUG>
33+
)
34+
35+
add_library(geodesy)
36+
target_include_directories(geodesy PUBLIC
37+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/>
38+
$<INSTALL_INTERFACE:include/geodesy>
39+
)
40+
41+
add_subdirectory(src)
42+
43+
# Install headers at: $PREFIX/datetime/...
44+
install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/
45+
DESTINATION include/geodesy
46+
)
47+
48+
# install library
49+
install(TARGETS geodesy
50+
EXPORT geodesyTargets
51+
ARCHIVE DESTINATION lib
52+
LIBRARY DESTINATION lib
53+
RUNTIME DESTINATION bin
54+
)
55+
56+
install(EXPORT geodesyTargets
57+
FILE geodesyTargets.cmake
58+
NAMESPACE dso::
59+
DESTINATION lib/cmake/geodesy
60+
)
61+
include(CMakePackageConfigHelpers)
62+
write_basic_package_version_file(
63+
"geodesyConfigVersion.cmake"
64+
VERSION ${geodesy_version}
65+
COMPATIBILITY AnyNewerVersion
66+
)
67+
install(FILES "geodesyConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/geodesyConfigVersion.cmake"
68+
DESTINATION lib/cmake/dso
69+
)

geodesyConfig.cmake

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
include(CMakeFindDependencyMacro)
2+
# find_dependency(xxx 2.0)
3+
include(${CMAKE_CURRENT_LIST_DIR}/geodesyTargets.cmake)

src/CMakeLists.txt

+3-25
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,6 @@
1-
add_library(geodesy)
2-
31
target_sources(geodesy
42
PRIVATE
5-
cartesian_to_spherical.cpp
6-
geodetic_to_lvlh.cpp
7-
spherical_to_cartesian.cpp
3+
${CMAKE_SOURCE_DIR}/src/cartesian_to_spherical.cpp
4+
${CMAKE_SOURCE_DIR}/src/geodetic_to_lvlh.cpp
5+
${CMAKE_SOURCE_DIR}/src/spherical_to_cartesian.cpp
86
)
9-
10-
target_include_directories(geodesy
11-
PUBLIC
12-
${CMAKE_CURRENT_SOURCE_DIR}/../include
13-
${CMAKE_CURRENT_SOURCE_DIR}/../include/core
14-
)
15-
16-
# We need the Eigen-3 library
17-
target_link_libraries(geodesy PRIVATE Eigen3::Eigen)
18-
19-
# Install headers at: $PREFIX/geodesy/...
20-
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../include/
21-
DESTINATION include/geodesy
22-
)
23-
24-
# install library
25-
install(TARGETS geodesy
26-
ARCHIVE DESTINATION lib
27-
LIBRARY DESTINATION lib
28-
RUNTIME DESTINATION bin)

0 commit comments

Comments
 (0)