mirror of
https://github.com/Kitware/CMake.git
synced 2026-08-09 09:12:00 +00:00
Tutorial: Rewrite using conventions enabled by CMake 3.23
This is a full re-write of the CMake Tutorial for CMake 3.23, both the functionality it provides, as well as the modern workflows that developers use when interfacing with CMake. Issue: #22663, #23086, #23799, #26053, #26105, #26153, #26914
This commit is contained in:
committed by
Brad King
parent
9e89400d13
commit
b2e3e3e30e
33
Help/guide/tutorial/Step4/Tutorial/CMakeLists.txt
Normal file
33
Help/guide/tutorial/Step4/Tutorial/CMakeLists.txt
Normal file
@@ -0,0 +1,33 @@
|
||||
add_executable(Tutorial)
|
||||
|
||||
target_sources(Tutorial
|
||||
PRIVATE
|
||||
Tutorial.cxx
|
||||
)
|
||||
|
||||
# TODO14: Add VendorLib to Tutorial
|
||||
|
||||
target_link_libraries(Tutorial
|
||||
PRIVATE
|
||||
MathFunctions
|
||||
)
|
||||
|
||||
# TODO4: Add a compile feature for C++20 support to Tutorial
|
||||
|
||||
|
||||
if(
|
||||
(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") OR
|
||||
(CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC")
|
||||
)
|
||||
|
||||
# TODO9: Add the /W3 compile flag to Tutorial
|
||||
|
||||
elseif(
|
||||
(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR
|
||||
(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
)
|
||||
|
||||
# TODO10: Add the -Wall compile flag to Tutorial
|
||||
|
||||
|
||||
endif()
|
||||
36
Help/guide/tutorial/Step4/Tutorial/Tutorial.cxx
Normal file
36
Help/guide/tutorial/Step4/Tutorial/Tutorial.cxx
Normal file
@@ -0,0 +1,36 @@
|
||||
// A simple program that computes the square root of a number
|
||||
#include <format>
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
#include <MathFunctions.h>
|
||||
|
||||
#ifdef TUTORIAL_USE_VENDORLIB
|
||||
# include <Vendor.h>
|
||||
#endif
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
if (argc < 2) {
|
||||
std::cout << std::format("Usage: {} number\n", argv[0]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int unused;
|
||||
|
||||
// convert input to double
|
||||
double const inputValue = std::stod(argv[1]);
|
||||
|
||||
// calculate square root
|
||||
double const outputValue = mathfunctions::sqrt(inputValue);
|
||||
std::cout << std::format("The square root of {} is {}\n", inputValue,
|
||||
outputValue);
|
||||
|
||||
#ifdef TUTORIAL_USE_VENDORLIB
|
||||
if (CheckSqrt(inputValue, outputValue)) {
|
||||
std::cout << "Sqrt verified by vendor\n";
|
||||
} else {
|
||||
std::cout << "Sqrt rejected by vendor\n";
|
||||
}
|
||||
#endif
|
||||
}
|
||||
Reference in New Issue
Block a user