mirror of
https://github.com/Kitware/CMake.git
synced 2026-07-06 06:37:24 +00:00
Propagate the refactor in Step 10 MathFunctions through all of the steps. Use MathFunctions/MathFunctions.cxx instead of Tutorial.cxx to determine which sqrt library is called. Adds .h files which correspond to their .cxx files by name.
47 lines
1.3 KiB
CMake
47 lines
1.3 KiB
CMake
add_library(MathFunctions MathFunctions.cxx mysqrt.cxx)
|
|
|
|
# should we use our own math functions
|
|
option(USE_MYMATH "Use tutorial provided math implementation" ON)
|
|
if (USE_MYMATH)
|
|
target_compile_definitions(MathFunctions PRIVATE "USE_MYMATH")
|
|
|
|
# does this system provide the log and exp functions?
|
|
include(CheckCXXSourceCompiles)
|
|
check_cxx_source_compiles("
|
|
#include <cmath>
|
|
int main() {
|
|
std::log(1.0);
|
|
return 0;
|
|
}
|
|
" HAVE_LOG)
|
|
check_cxx_source_compiles("
|
|
#include <cmath>
|
|
int main() {
|
|
std::exp(1.0);
|
|
return 0;
|
|
}
|
|
" HAVE_EXP)
|
|
|
|
# add compile definitions
|
|
if(HAVE_LOG AND HAVE_EXP)
|
|
target_compile_definitions(MathFunctions
|
|
PRIVATE "HAVE_LOG" "HAVE_EXP"
|
|
)
|
|
endif()
|
|
endif()
|
|
|
|
# state that anybody linking to us needs to include the current source dir
|
|
# to find MathFunctions.h, while we don't.
|
|
target_include_directories(MathFunctions
|
|
INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}
|
|
)
|
|
|
|
# link our compiler flags interface library
|
|
target_link_libraries(MathFunctions PUBLIC tutorial_compiler_flags)
|
|
|
|
# install libs
|
|
set(installable_libs MathFunctions tutorial_compiler_flags)
|
|
install(TARGETS ${installable_libs} DESTINATION lib)
|
|
# install include headers
|
|
install(FILES MathFunctions.h DESTINATION include)
|