-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathexternal.cmake
More file actions
44 lines (36 loc) · 1.58 KB
/
external.cmake
File metadata and controls
44 lines (36 loc) · 1.58 KB
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
include(ExternalProject)
function(ExternalProject repourl tag destination)
message(STATUS "Get external project from: ${repourl} : ${tag}")
string(REGEX MATCH "([^\\/]+)[.]git$" _name ${repourl})
message(STATUS "_name = ${_name}")
set(options)
set(oneValueArgs)
set(multiValueArgs CMAKE_ARGS)
cmake_parse_arguments(ExternalProject "${options}" "${oneValueArgs}"
"${multiValueArgs}" ${ARGN})
set(cmake_cli_args -DCMAKE_INSTALL_PREFIX=${destination}
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE})
if(CMAKE_TOOLCHAIN_FILE)
get_filename_component(_ft_path ${CMAKE_TOOLCHAIN_FILE} ABSOLUTE)
get_filename_component(_cm_rt_opath ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
ABSOLUTE)
set(cmake_cli_args ${cmake_cli_args} -DCMAKE_TOOLCHAIN_FILE=${_ft_path}
-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${_cm_rt_opath})
endif()
foreach(cmake_key ${ExtProjectGit_CMAKE_ARGS})
set(cmake_cli_args ${cmake_key} ${cmake_cli_args})
endforeach()
message(STATUS "ARGS for ExternalProject_Add(${name}): ${cmake_cli_args}")
message(STATUS "CMAKE_CXX_FLAGS = ${CMAKE_CXX_FLAGS}")
ExternalProject_Add(
${_name}
GIT_REPOSITORY ${repourl}
GIT_TAG ${tag}
CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} ${cmake_cli_args}
-DCMAKE_CXX_STANDARD=17
PREFIX "${destination}"
INSTALL_DIR "${destination}"
INSTALL_COMMAND "${CMAKE_COMMAND}" --install "<BINARY_DIR>" --prefix
"${destination}")
endfunction()