Tests: Update CMake tutorial

Latest material from data.kitware.com -> Collections -> Courses -> CMake.
This commit is contained in:
Betsy McPhail
2019-01-20 11:28:39 -05:00
parent 438651506a
commit f2ddedfa58
112 changed files with 3118 additions and 623 deletions
+51
View File
@@ -0,0 +1,51 @@
cmake_minimum_required(VERSION 3.3)
if(NOT DEFINED CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)
endif()
function(find_external_dependency name)
set(${name}_ROOT "" CACHE PATH "Root directory to find ${name}")
mark_as_advanced(${name}_DIR)
find_package(${name} PATHS ${${name}_ROOT} REQUIRED)
endfunction()
project(Consumer)
find_external_dependency(MathFunctions)
add_library(consumer consumer.cxx)
target_link_libraries(consumer PUBLIC MathFunctions)
# install the consumer library
install(TARGETS consumer DESTINATION bin EXPORT ConsumerTargets)
# install the configuration targets
install(EXPORT ConsumerTargets
FILE ConsumerTargets.cmake
DESTINATION lib/cmake/Consumer
)
include(CMakePackageConfigHelpers)
# generate the config file that is includes the exports
configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in
"${CMAKE_CURRENT_BINARY_DIR}/ConsumerConfig.cmake"
INSTALL_DESTINATION "lib/cmake/example"
NO_SET_AND_CHECK_MACRO
NO_CHECK_REQUIRED_COMPONENTS_MACRO
)
# install the configuration file
install(FILES
${CMAKE_CURRENT_BINARY_DIR}/ConsumerConfig.cmake
DESTINATION lib/cmake/Consumer
)
# generate the export targets for the build tree
# needs to be after the install(TARGETS ) command
export(EXPORT ConsumerTargets
FILE "${CMAKE_CURRENT_BINARY_DIR}/ConsumerTargets.cmake"
)
+14
View File
@@ -0,0 +1,14 @@
@PACKAGE_INIT@
include(CMakeFindDependencyMacro)
function(find_external_dependency name)
set(${name}_ROOT "" CACHE PATH "Root directory to find ${name}")
mark_as_advanced(${name}_DIR)
find_dependency(${name} PATHS ${${name}_ROOT} REQUIRED)
endfunction()
find_external_dependency(MathFunctions)
include ( "${CMAKE_CURRENT_LIST_DIR}/ConsumerTargets.cmake" )
+11
View File
@@ -0,0 +1,11 @@
// A simple function that computes the square root of a number
#include <iostream>
#include <sstream>
#include <string>
#include "MathFunctions.h"
double string_square_root(std::string const& value)
{
return mathfunctions::sqrt(std::stod(value));
}
+6
View File
@@ -0,0 +1,6 @@
# Import a CMake Project#
This examples shows how a project can find other CMake packages that
generated Config.cmake files.
It also shows how to state a projects external dependencies when generating a Config.cmake.