Skip to content

Commit 12cf08e

Browse files
committed
Update cpp-api example
1 parent cdcda9a commit 12cf08e

File tree

3 files changed

+79
-2
lines changed

3 files changed

+79
-2
lines changed

example/cpp-api/CMakeLists.txt

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,47 @@ set(CMAKE_CXX_STANDARD 11)
77

88
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
99

10+
set(CMAKE_BUILD_TYPE "Release")
11+
set(CMAKE_CXX_FLAGS "-O3 -DSPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_TRACE")
12+
set(CMAKE_CXX_STANDARD 11)
13+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/build")
14+
15+
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
16+
17+
find_package(Conda)
18+
if(CONDA_PREFIX)
19+
message(STATUS "Set CONDA_PREFIX ${CONDA_PREFIX}")
20+
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${CONDA_PREFIX})
21+
else()
22+
message(STATUS "Non conda exist, search library in default path")
23+
endif()
24+
25+
find_package(GDAL 2.2 REQUIRED)
26+
if (GDAL_FOUND)
27+
message(STATUS "GDAL headers found at ${GDAL_INCLUDE_DIR}")
28+
message(STATUS "GDAL library found at ${GDAL_LIBRARIES}")
29+
include_directories(${GDAL_INCLUDE_DIR})
30+
else()
31+
message(FATAL_ERROR "GDAL Not Found!")
32+
endif (GDAL_FOUND)
33+
34+
find_package(Boost 1.56.0 REQUIRED serialization)
35+
if (Boost_FOUND)
36+
message(STATUS "Boost headers found at ${Boost_INCLUDE_DIR}")
37+
message(STATUS "Boost library found at ${Boost_LIBRARIES}")
38+
message(STATUS "Boost library version ${Boost_LIB_VERSION}")
39+
else()
40+
message(FATAL_ERROR "Boost Not Found!")
41+
endif (Boost_FOUND)
42+
43+
find_package(OpenMP REQUIRED)
44+
if(OPENMP_FOUND)
45+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
46+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
47+
message(STATUS "OpenMP_HEADERS found at ${OpenMP_CXX_INCLUDE_DIRS}")
48+
message(STATUS "OpenMP_CXX_LIBRARIES found at ${OpenMP_CXX_LIBRARIES}")
49+
endif()
50+
1051
find_package(FMM REQUIRED)
1152
if (FMM_FOUND)
1253
message(STATUS "FMM headers found at ${FMM_INCLUDE_DIR}")
@@ -17,7 +58,19 @@ else()
1758
message(FATAL_ERROR "FMM Not Found!")
1859
endif (FMM_FOUND)
1960

61+
### Set RPATH properties
62+
63+
set(CMAKE_SKIP_BUILD_RPATH FALSE)
64+
65+
set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
66+
67+
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
68+
69+
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
70+
2071
add_executable(fmm_print_network main.cpp)
21-
target_link_libraries(fmm_print_network ${FMM_LIBRARY})
72+
target_link_libraries(fmm_print_network
73+
${FMM_LIBRARY} ${GDAL_LIBRARIES} ${Boost_LIBRARIES}
74+
${OpenMP_CXX_LIBRARIES})
2275

2376
install(TARGETS fmm_print_network DESTINATION bin)
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
if(DEFINED ENV{CONDA_PREFIX})
2+
set(CONDA_PREFIX $ENV{CONDA_PREFIX} CACHE PATH "")
3+
else()
4+
# Assuming the active conda environment is on PATH, this finds the path of bin/ in the environment
5+
find_program(CONDA_EXECUTABLE conda
6+
PATHS ${CONDA_PREFIX}/bin ${CONDA_PREFIX}/Scripts ENV PATH
7+
)
8+
if(CONDA_EXECUTABLE)
9+
execute_process(COMMAND ${CONDA_EXECUTABLE} info --root
10+
OUTPUT_VARIABLE out_var
11+
OUTPUT_STRIP_TRAILING_WHITESPACE
12+
)
13+
execute_process(COMMAND ${CONDA_EXECUTABLE} info --envs
14+
)
15+
else()
16+
message(STATUS "\nNo conda environment found in PATH!\nPATH=$ENV{PATH}\n")
17+
endif()
18+
set(CONDA_PREFIX ${out_var})
19+
endif()
20+
21+
include(FindPackageHandleStandardArgs)
22+
find_package_handle_standard_args(Conda
23+
REQUIRED_VARS CONDA_PREFIX
24+
)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ else ()
55
endif ()
66

77
if (NOT FMM_LIBRARY)
8-
find_library(FMM_LIBRARY NAMES fmmlib NAMES_PER_DIR PATH_SUFFIXES lib)
8+
find_library(FMM_LIBRARY NAMES FMMLIB PATH_SUFFIXES lib)
99
else ()
1010
file(TO_CMAKE_PATH "${FMM_LIBRARY}" FMM_LIBRARY)
1111
endif ()

0 commit comments

Comments
 (0)