-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
98 lines (76 loc) · 2.26 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
cmake_minimum_required(VERSION 3.0.0)
include(GNUInstallDirs)
set(FEM_SOLVER_PROJECT_NAME FEM_Solver)
project(${FEM_SOLVER_PROJECT_NAME})
#########################
# External Dependencies #
#########################
include(ExternalProject)
ExternalProject_Add(zlib
URL "${CMAKE_SOURCE_DIR}/external_libs/zlib.tar.bz2"
CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}"
)
ExternalProject_Add(triangle
SOURCE_DIR "${CMAKE_SOURCE_DIR}/external_libs/triangle"
CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}"
)
ExternalProject_Add(libpng
DEPENDS zlib
URL "${CMAKE_SOURCE_DIR}/external_libs/libpng.tar.bz2"
CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}"
)
ExternalProject_Add(libgd
DEPENDS libpng
URL "${CMAKE_SOURCE_DIR}/external_libs/libgd.tar.bz2"
CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}"
)
ExternalProject_Add(plplot
DEPENDS libgd
URL "${CMAKE_SOURCE_DIR}/external_libs/plplot.tar.bz2"
CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}"
)
ExternalProject_Add(fem
DEPENDS triangle
SOURCE_DIR "${CMAKE_SOURCE_DIR}/external_libs/fem"
CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}"
)
link_directories("${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}")
###########
# Project #
###########
set(FEM_SOLVER_LIBS
triangle_main
plplot_main
libpng_main
)
set(FEM_SOLVER_SOURCES
src/main/fem_solver.c
src/main/prob_def.c
)
foreach(LIBRARY ${FEM_SOLVER_LIBS})
add_subdirectory("src/${LIBRARY}")
endforeach()
add_executable(${FEM_SOLVER_PROJECT_NAME}
${FEM_SOLVER_SOURCES}
)
target_include_directories(${FEM_SOLVER_PROJECT_NAME} BEFORE
PRIVATE "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}"
"src"
)
target_link_libraries(${FEM_SOLVER_PROJECT_NAME}
${FEM_SOLVER_LIBS}
libfem.a
libplplot.a
liblibgd.a
liblibpng.a
libtriangle.a
libzlib.a
m
)
set_target_properties(${FEM_SOLVER_PROJECT_NAME} ${FEM_SOLVER_LIBS}
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
)
file(COPY bin/ DESTINATION bin/)