Skip to content

Commit 5e151ee

Browse files
authored
Build and download 3rd-party to build dir (#63)
* Build and download 3rd-party to build dir * Configure gtests in build dir
1 parent 802e4b5 commit 5e151ee

File tree

5 files changed

+20
-24
lines changed

5 files changed

+20
-24
lines changed

.gitignore

+1-5
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,5 @@ msvc/2015/TestTsLib/TestTsLib/settings.json
8383
# CPack
8484
CPackConfig.cmake
8585

86-
# Cached 3rd-party
87-
3rd-party/googletest*
88-
3rd-party/benchmark*
89-
9086
# Windows CPack
91-
_CPack_Packages
87+
_CPack_Packages

3rd-party/CMakeLists.txt

+12-12
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ include(ExternalProject)
3939
ExternalProject_Add(
4040
plog
4141
URL ${CMAKE_CURRENT_SOURCE_DIR}/plog-${PLOG_VERSION}.tar.gz
42-
INSTALL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/plog-${PLOG_VERSION}
42+
INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/plog-${PLOG_VERSION}
4343
CMAKE_ARGS -D CMAKE_BUILD_TYPE=Release
4444
-D CMAKE_INSTALL_PREFIX=<INSTALL_DIR>
4545
-D PLOG_BUILD_SAMPLES=OFF
@@ -50,7 +50,7 @@ ExternalProject_Add(
5050
ExternalProject_Add(
5151
json
5252
URL ${CMAKE_CURRENT_SOURCE_DIR}/json-${NLOHMANN_VERSION}.tar.gz
53-
INSTALL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/json-${NLOHMANN_VERSION}
53+
INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/json-${NLOHMANN_VERSION}
5454
CMAKE_ARGS -D CMAKE_BUILD_TYPE=Release
5555
-D BUILD_TESTING=OFF
5656
-D CMAKE_INSTALL_PREFIX=<INSTALL_DIR>
@@ -70,17 +70,17 @@ if(NOT USE_DOCKER AND NOT ENABLE_WEBASSEMBLY AND ENABLE_TESTS)
7070
endif(APPLE)
7171

7272
# Download and unpack googletest at configure time
73-
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists_googletest.txt.in ${CMAKE_CURRENT_SOURCE_DIR}/googletest-download/CMakeLists.txt)
73+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists_googletest.txt.in ${CMAKE_CURRENT_BINARY_DIR}/googletest-download/CMakeLists.txt)
7474
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
7575
RESULT_VARIABLE result
76-
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/googletest-download
76+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download
7777
)
7878
if(result)
7979
message(FATAL_ERROR "CMake step for googletest failed: ${result}")
8080
endif()
8181
execute_process(COMMAND ${CMAKE_COMMAND} --build .
8282
RESULT_VARIABLE result
83-
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/googletest-download )
83+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download )
8484
if(result)
8585
message(FATAL_ERROR "Build step for googletest failed: ${result}")
8686
endif()
@@ -91,8 +91,8 @@ if(NOT USE_DOCKER AND NOT ENABLE_WEBASSEMBLY AND ENABLE_TESTS)
9191

9292
# Add googletest directly to our build. This defines
9393
# the gtest and gtest_main targets.
94-
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/googletest-src
95-
${CMAKE_CURRENT_SOURCE_DIR}/googletest-build
94+
add_subdirectory(${CMAKE_CURRENT_BINARY_DIR}/googletest-src
95+
${CMAKE_CURRENT_BINARY_DIR}/googletest-build
9696
EXCLUDE_FROM_ALL)
9797

9898
# The gtest/gtest_main targets carry header search path
@@ -118,16 +118,16 @@ if(NOT USE_DOCKER AND NOT ENABLE_WEBASSEMBLY AND ENABLE_TESTS)
118118
set(BENCHMARK_ENABLE_TESTING OFF)
119119

120120
# Download and unpack benchmark at configure time
121-
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists_benchmark.txt.in ${CMAKE_CURRENT_SOURCE_DIR}/benchmark-download/CMakeLists.txt)
121+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists_benchmark.txt.in ${CMAKE_CURRENT_BINARY_DIR}/benchmark-download/CMakeLists.txt)
122122
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
123123
RESULT_VARIABLE result
124-
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/benchmark-download )
124+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/benchmark-download )
125125
if(result)
126126
message(FATAL_ERROR "CMake step for benchmark failed: ${result}")
127127
endif()
128128
execute_process(COMMAND ${CMAKE_COMMAND} --build .
129129
RESULT_VARIABLE result
130-
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/benchmark-download )
130+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/benchmark-download )
131131
if(result)
132132
message(FATAL_ERROR "Build step for benchmark failed: ${result}")
133133
endif()
@@ -139,8 +139,8 @@ if(NOT USE_DOCKER AND NOT ENABLE_WEBASSEMBLY AND ENABLE_TESTS)
139139

140140
# Add benchmark directly to our build. This defines
141141
# the gtest and gtest_main targets.
142-
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/benchmark-src
143-
${CMAKE_CURRENT_SOURCE_DIR}/benchmark-build
142+
add_subdirectory(${CMAKE_CURRENT_BINARY_DIR}/benchmark-src
143+
${CMAKE_CURRENT_BINARY_DIR}/benchmark-build
144144
EXCLUDE_FROM_ALL)
145145

146146
# The gtest/gtest_main targets carry header search path

3rd-party/CMakeLists_benchmark.txt.in

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ include(ExternalProject)
66
ExternalProject_Add(benchmark
77
GIT_REPOSITORY https://github.com/google/benchmark.git
88
GIT_TAG main
9-
SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/benchmark-src"
10-
BINARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/benchmark-build"
9+
SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/benchmark-src"
10+
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/benchmark-build"
1111
GIT_SHALLOW 1
1212
CONFIGURE_COMMAND ""
1313
BUILD_COMMAND ""

3rd-party/CMakeLists_googletest.txt.in

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ ExternalProject_Add(googletest
77
GIT_REPOSITORY https://github.com/google/googletest.git
88
GIT_TAG main
99
GIT_SHALLOW 1
10-
SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/googletest-src"
11-
BINARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/googletest-build"
10+
SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/googletest-src"
11+
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/googletest-build"
1212
CONFIGURE_COMMAND ""
1313
BUILD_COMMAND ""
1414
INSTALL_COMMAND ""

CMakeLists.txt

+3-3
Original file line numberDiff line numberDiff line change
@@ -173,10 +173,10 @@ endif()
173173

174174

175175
#-------------------
176-
# 3rd-party
176+
# Include 3rd-party
177177
#-------------------
178-
include_directories(3rd-party/json-${NLOHMANN_VERSION}/include)
179-
include_directories(3rd-party/plog-${PLOG_VERSION}/include)
178+
include_directories(${CMAKE_CURRENT_BINARY_DIR}/3rd-party/json-${NLOHMANN_VERSION}/include)
179+
include_directories(${CMAKE_CURRENT_BINARY_DIR}/3rd-party/plog-${PLOG_VERSION}/include)
180180

181181

182182
#-------------------

0 commit comments

Comments
 (0)