mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-21 14:40:48 +08:00

During the training, we talk about INTERFACE libraries just before Step3 so it makes more sense to do the exercise related to them in Step3
45 lines
1.5 KiB
CMake
45 lines
1.5 KiB
CMake
# TODO 1: Update the minimum required version to 3.15
|
|
|
|
cmake_minimum_required(VERSION 3.10)
|
|
|
|
# set the project name and version
|
|
project(Tutorial VERSION 1.0)
|
|
|
|
# specify the C++ standard
|
|
add_library(tutorial_compiler_flags INTERFACE)
|
|
target_compile_features(tutorial_compiler_flags INTERFACE cxx_std_11)
|
|
|
|
# TODO 2: Create helper variables to determine which compiler we are using:
|
|
# * Create a new variable gcc_like_cxx that is true if we are using CXX and
|
|
# any of the following compilers: ARMClang, AppleClang, Clang, GNU, LCC
|
|
# * Create a new variable msvc_cxx that is true if we are using CXX and MSVC
|
|
# Hint: Use set() and COMPILE_LANG_AND_ID
|
|
|
|
# TODO 3: Add warning flag compile options to the interface library
|
|
# tutorial_compiler_flags.
|
|
# * For gcc_like_cxx, add flags -Wall;-Wextra;-Wshadow;-Wformat=2;-Wunused
|
|
# * For msvc_cxx, add flags -W3
|
|
# Hint: Use target_compile_options()
|
|
|
|
# TODO 4: With nested generator expressions, only use the flags for the
|
|
# build-tree
|
|
# Hint: Use BUILD_INTERFACE
|
|
|
|
# configure a header file to pass some of the CMake settings
|
|
# to the source code
|
|
configure_file(TutorialConfig.h.in TutorialConfig.h)
|
|
|
|
# add the MathFunctions library
|
|
add_subdirectory(MathFunctions)
|
|
|
|
# add the executable
|
|
add_executable(Tutorial tutorial.cxx)
|
|
|
|
target_link_libraries(Tutorial PUBLIC MathFunctions tutorial_compiler_flags)
|
|
|
|
# add the binary tree to the search path for include files
|
|
# so that we will find TutorialConfig.h
|
|
target_include_directories(Tutorial PUBLIC
|
|
"${PROJECT_BINARY_DIR}"
|
|
)
|