Build each library only once instead of once for each test.
This commit is contained in:
parent
c83cfd7a01
commit
08271ec7d3
|
@ -55,6 +55,29 @@ else()
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
set(DEPS
|
||||||
|
libshared
|
||||||
|
libstatic
|
||||||
|
lib_shared_and_static
|
||||||
|
)
|
||||||
|
|
||||||
|
foreach(DEP ${DEPS})
|
||||||
|
try_compile(Result ${CMAKE_CURRENT_BINARY_DIR}/${DEP}_build
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/${DEP}
|
||||||
|
${DEP}
|
||||||
|
OUTPUT_VARIABLE Out
|
||||||
|
)
|
||||||
|
if (NOT Result)
|
||||||
|
message("OUTPUT: ${Out}")
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
# The _do_build macro is called from a child scope, where
|
||||||
|
# the current source and binary dir are different. Save them here
|
||||||
|
# for use in the macro.
|
||||||
|
set(TEST_TOP_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
|
set(TEST_TOP_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
|
|
||||||
|
|
||||||
# We seem to get race conditions is writing this stuff to the same file at least on MinGW
|
# We seem to get race conditions is writing this stuff to the same file at least on MinGW
|
||||||
# So to write to separate source and build directories, we use a count to differentiate.
|
# So to write to separate source and build directories, we use a count to differentiate.
|
||||||
|
@ -67,8 +90,6 @@ macro(_do_build Include Library LibrarySource Source)
|
||||||
"int main() { ${Source}; }\n"
|
"int main() { ${Source}; }\n"
|
||||||
)
|
)
|
||||||
|
|
||||||
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/../${LibrarySource}" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/test${COUNT}")
|
|
||||||
|
|
||||||
if ("${Library}" STREQUAL "static_variant")
|
if ("${Library}" STREQUAL "static_variant")
|
||||||
set(CONDITIONAL_STATIC_DEFINE "add_definitions(-DLIBSHARED_AND_STATIC_STATIC_DEFINE)\n")
|
set(CONDITIONAL_STATIC_DEFINE "add_definitions(-DLIBSHARED_AND_STATIC_STATIC_DEFINE)\n")
|
||||||
endif()
|
endif()
|
||||||
|
@ -90,9 +111,10 @@ macro(_do_build Include Library LibrarySource Source)
|
||||||
" add_definitions(${ERROR_FLAG})\n"
|
" add_definitions(${ERROR_FLAG})\n"
|
||||||
"endif()\n"
|
"endif()\n"
|
||||||
|
|
||||||
"add_subdirectory(\"${LibrarySource}\")\n"
|
"include(\"${TEST_TOP_BINARY_DIR}/${LibrarySource}_build/Targets.cmake\")\n"
|
||||||
|
|
||||||
"include_directories(\"${LibrarySource}\" \"\${CMAKE_CURRENT_BINARY_DIR}/${LibrarySource}\")\n"
|
"include_directories(\"${TEST_TOP_SOURCE_DIR}/${LibrarySource}\"\n"
|
||||||
|
" \"${TEST_TOP_BINARY_DIR}/${LibrarySource}_build\")\n"
|
||||||
|
|
||||||
"${CONDITIONAL_STATIC_DEFINE}"
|
"${CONDITIONAL_STATIC_DEFINE}"
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,13 @@
|
||||||
project(shared_and_static)
|
|
||||||
|
cmake_minimum_required(VERSION 2.8)
|
||||||
|
|
||||||
|
project(lib_shared_and_static)
|
||||||
|
|
||||||
|
include(GenerateExportHeader)
|
||||||
|
|
||||||
|
add_compiler_export_flags()
|
||||||
|
|
||||||
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||||
|
|
||||||
set(lib_SRCS
|
set(lib_SRCS
|
||||||
libshared_and_static.cpp
|
libshared_and_static.cpp
|
||||||
|
@ -10,3 +19,5 @@ add_library(static_variant ${lib_SRCS})
|
||||||
generate_export_header(shared_variant BASE_NAME libshared_and_static)
|
generate_export_header(shared_variant BASE_NAME libshared_and_static)
|
||||||
|
|
||||||
set_target_properties(static_variant PROPERTIES COMPILE_FLAGS -DLIBSHARED_AND_STATIC_STATIC_DEFINE)
|
set_target_properties(static_variant PROPERTIES COMPILE_FLAGS -DLIBSHARED_AND_STATIC_STATIC_DEFINE)
|
||||||
|
|
||||||
|
export(TARGETS shared_variant static_variant FILE Targets.cmake)
|
||||||
|
|
|
@ -1,6 +1,16 @@
|
||||||
|
|
||||||
|
cmake_minimum_required(VERSION 2.8)
|
||||||
|
|
||||||
project(libshared)
|
project(libshared)
|
||||||
|
|
||||||
|
include(GenerateExportHeader)
|
||||||
|
|
||||||
|
add_compiler_export_flags()
|
||||||
|
|
||||||
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||||
|
|
||||||
add_library(libshared SHARED libshared.cpp)
|
add_library(libshared SHARED libshared.cpp)
|
||||||
|
|
||||||
generate_export_header(libshared)
|
generate_export_header(libshared)
|
||||||
|
|
||||||
|
export(TARGETS libshared FILE Targets.cmake)
|
||||||
|
|
|
@ -1,8 +1,18 @@
|
||||||
|
|
||||||
|
cmake_minimum_required(VERSION 2.8)
|
||||||
|
|
||||||
project(libstatic)
|
project(libstatic)
|
||||||
|
|
||||||
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||||
|
|
||||||
|
include(GenerateExportHeader)
|
||||||
|
|
||||||
|
add_compiler_export_flags()
|
||||||
|
|
||||||
# Show that the export header has no effect on a static library.
|
# Show that the export header has no effect on a static library.
|
||||||
|
|
||||||
add_library(libstatic STATIC libstatic.cpp)
|
add_library(libstatic STATIC libstatic.cpp)
|
||||||
|
|
||||||
generate_export_header(libstatic)
|
generate_export_header(libstatic)
|
||||||
|
|
||||||
|
export(TARGETS libstatic FILE Targets.cmake)
|
||||||
|
|
Loading…
Reference in New Issue