-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
288 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,288 @@ | ||
|
||
cmake_minimum_required(VERSION 3.14) | ||
project(black-scholes) | ||
|
||
# GoogleTest requires at least C++14 | ||
set(CMAKE_CXX_STANDARD 20) | ||
set(CMAKE_CXX_STANDARD_REQUIRED ON) | ||
|
||
# Now simply link against gtest or gtest_main as needed. Eg | ||
add_executable(bs blackScholesModel.cpp Program.cpp inputReader.cpp OutputWriter.cpp optionGreeks.cpp optionGreeksModel.cpp hestonModel.cpp) | ||
target_link_libraries(example gtest_main) | ||
add_test(NAME example_test COMMAND example) | ||
|
||
|
||
######################################################################## | ||
# | ||
# CMake build script for Google Test. | ||
# | ||
# To run the tests for Google Test itself on Linux, use 'make test' or | ||
# ctest. You can select which tests to run using 'ctest -R regex'. | ||
# For more options, run 'ctest --help'. | ||
|
||
include(FetchContent) | ||
FetchContent_Declare( | ||
googletest | ||
# Specify the commit you depend on and update it regularly. | ||
URL https://github.com/google/googletest/archive/5376968f6948923e2411081fd9372e71a59d8e77.zip | ||
) | ||
|
||
target_link_libraries(example gtest_main) | ||
add_test(NAME example_test COMMAND example) | ||
|
||
|
||
# When other libraries are using a shared version of runtime libraries, | ||
# Google Test also has to use one. | ||
option( | ||
gtest_force_shared_crt | ||
"Use shared (DLL) run-time lib even when Google Test is built as static lib." | ||
OFF) | ||
|
||
option(gtest_build_tests "Build all of gtest's own tests." OFF) | ||
|
||
option(gtest_build_samples "Build gtest's sample programs." OFF) | ||
|
||
option(gtest_disable_pthreads "Disable uses of pthreads in gtest." OFF) | ||
|
||
option( | ||
gtest_hide_internal_symbols | ||
"Build gtest with internal symbols hidden in shared libraries." | ||
OFF) | ||
|
||
# Defines pre_project_set_up_hermetic_build() and set_up_hermetic_build(). | ||
include(cmake/hermetic_build.cmake OPTIONAL) | ||
|
||
if (COMMAND pre_project_set_up_hermetic_build) | ||
pre_project_set_up_hermetic_build() | ||
endif() | ||
|
||
######################################################################## | ||
# | ||
# Project-wide settings | ||
|
||
# Name of the project. | ||
# | ||
# CMake files in this project can refer to the root source directory | ||
# as ${gtest_SOURCE_DIR} and to the root binary directory as | ||
# ${gtest_BINARY_DIR}. | ||
# Language "C" is required for find_package(Threads). | ||
|
||
# Project version: | ||
|
||
cmake_minimum_required(VERSION 3.14) | ||
project(gtest VERSION ${GOOGLETEST_VERSION} LANGUAGES CXX C) | ||
|
||
if (COMMAND set_up_hermetic_build) | ||
set_up_hermetic_build() | ||
endif() | ||
|
||
|
||
# These commands only run if this is the main project | ||
if(CMAKE_PROJECT_NAME STREQUAL "gtest" OR CMAKE_PROJECT_NAME STREQUAL "googletest-distribution") | ||
|
||
# BUILD_SHARED_LIBS is a standard CMake variable, but we declare it here to | ||
# make it prominent in the GUI. | ||
option(BUILD_SHARED_LIBS "Build shared libraries (DLLs)." OFF) | ||
|
||
else() | ||
|
||
mark_as_advanced( | ||
gtest_force_shared_crt | ||
gtest_build_tests | ||
gtest_build_samples | ||
gtest_disable_pthreads | ||
gtest_hide_internal_symbols) | ||
|
||
endif() | ||
|
||
|
||
if (gtest_hide_internal_symbols) | ||
set(CMAKE_CXX_VISIBILITY_PRESET hidden) | ||
set(CMAKE_VISIBILITY_INLINES_HIDDEN 1) | ||
endif() | ||
|
||
# Define helper functions and macros used by Google Test. | ||
include(cmake/internal_utils.cmake) | ||
|
||
config_compiler_and_linker() # Defined in internal_utils.cmake. | ||
|
||
# Needed to set the namespace for both the export targets and the | ||
# alias libraries | ||
set(cmake_package_name GTest CACHE INTERNAL "") | ||
|
||
# Create the CMake package file descriptors. | ||
if (INSTALL_GTEST) | ||
include(CMakePackageConfigHelpers) | ||
set(targets_export_name ${cmake_package_name}Targets CACHE INTERNAL "") | ||
set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated" CACHE INTERNAL "") | ||
set(cmake_files_install_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${cmake_package_name}") | ||
set(version_file "${generated_dir}/${cmake_package_name}ConfigVersion.cmake") | ||
write_basic_package_version_file(${version_file} VERSION ${GOOGLETEST_VERSION} COMPATIBILITY AnyNewerVersion) | ||
install(EXPORT ${targets_export_name} | ||
COMPONENT "${PROJECT_NAME}" | ||
NAMESPACE ${cmake_package_name}:: | ||
DESTINATION ${cmake_files_install_dir}) | ||
set(config_file "${generated_dir}/${cmake_package_name}Config.cmake") | ||
configure_package_config_file("${gtest_SOURCE_DIR}/cmake/Config.cmake.in" | ||
"${config_file}" INSTALL_DESTINATION ${cmake_files_install_dir}) | ||
install(FILES ${version_file} ${config_file} | ||
COMPONENT "${PROJECT_NAME}" | ||
DESTINATION ${cmake_files_install_dir}) | ||
endif() | ||
|
||
# Where Google Test's .h files can be found. | ||
set(gtest_build_include_dirs | ||
"${gtest_SOURCE_DIR}/include" | ||
"${gtest_SOURCE_DIR}") | ||
include_directories(${gtest_build_include_dirs}) | ||
include_directories(~/Downloads/googletest-main/googletest/include) | ||
|
||
######################################################################## | ||
# | ||
# Defines the gtest & gtest_main libraries. User tests should link | ||
# with one of them. | ||
|
||
# Google Test libraries. We build them using more strict warnings than what | ||
# are used for other targets, to ensure that gtest can be compiled by a user | ||
# aggressive about warnings. | ||
cxx_library(gtest "${cxx_strict}" src/gtest-all.cc) | ||
set_target_properties(gtest PROPERTIES VERSION ${GOOGLETEST_VERSION}) | ||
if(GTEST_HAS_ABSL) | ||
target_compile_definitions(gtest PUBLIC GTEST_HAS_ABSL=1) | ||
target_link_libraries(gtest PUBLIC | ||
absl::failure_signal_handler | ||
absl::stacktrace | ||
absl::symbolize | ||
absl::flags_parse | ||
absl::flags_reflection | ||
absl::flags_usage | ||
absl::strings | ||
absl::any | ||
absl::optional | ||
absl::variant | ||
re2::re2 | ||
) | ||
endif() | ||
cxx_library(gtest_main "${cxx_strict}" src/gtest_main.cc) | ||
set_target_properties(gtest_main PROPERTIES VERSION ${GOOGLETEST_VERSION}) | ||
string(REPLACE ";" "$<SEMICOLON>" dirs "${gtest_build_include_dirs}") | ||
target_include_directories(gtest SYSTEM INTERFACE | ||
"$<BUILD_INTERFACE:${dirs}>" | ||
"$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${CMAKE_INSTALL_INCLUDEDIR}>") | ||
target_include_directories(gtest_main SYSTEM INTERFACE | ||
"$<BUILD_INTERFACE:${dirs}>" | ||
"$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${CMAKE_INSTALL_INCLUDEDIR}>") | ||
if(CMAKE_SYSTEM_NAME MATCHES "QNX") | ||
target_link_libraries(gtest PUBLIC regex) | ||
endif() | ||
target_link_libraries(gtest_main PUBLIC gtest) | ||
|
||
######################################################################## | ||
# | ||
# Install rules | ||
install_project(gtest gtest_main) | ||
|
||
######################################################################## | ||
# | ||
# Samples on how to link user tests with gtest or gtest_main. | ||
# | ||
# They are not built by default. To build them, set the | ||
# gtest_build_samples option to ON. You can do it by running ccmake | ||
# or specifying the -Dgtest_build_samples=ON flag when running cmake. | ||
|
||
if (gtest_build_samples) | ||
cxx_executable(sample1_unittest samples gtest_main samples/sample1.cc) | ||
cxx_executable(sample2_unittest samples gtest_main samples/sample2.cc) | ||
cxx_executable(sample3_unittest samples gtest_main) | ||
cxx_executable(sample4_unittest samples gtest_main samples/sample4.cc) | ||
cxx_executable(sample5_unittest samples gtest_main samples/sample1.cc) | ||
cxx_executable(sample6_unittest samples gtest_main) | ||
cxx_executable(sample7_unittest samples gtest_main) | ||
cxx_executable(sample8_unittest samples gtest_main) | ||
cxx_executable(sample9_unittest samples gtest) | ||
cxx_executable(sample10_unittest samples gtest) | ||
endif() | ||
|
||
######################################################################## | ||
# | ||
# Google Test's own tests. | ||
# | ||
# You can skip this section if you aren't interested in testing | ||
# Google Test itself. | ||
# | ||
# The tests are not built by default. To build them, set the | ||
# gtest_build_tests option to ON. You can do it by running ccmake | ||
# or specifying the -Dgtest_build_tests=ON flag when running cmake. | ||
|
||
if (gtest_build_tests) | ||
# This must be set in the root directory for the tests to be run by | ||
# 'make test' or ctest. | ||
enable_testing() | ||
|
||
############################################################ | ||
# C++ tests built with standard compiler flags. | ||
|
||
cxx_test(googletest-death-test-test gtest_main) | ||
cxx_test(gtest_environment_test gtest) | ||
cxx_test(googletest-filepath-test gtest_main) | ||
cxx_test(googletest-listener-test gtest_main) | ||
cxx_test(gtest_main_unittest gtest_main) | ||
cxx_test(googletest-message-test gtest_main) | ||
cxx_test(gtest_no_test_unittest gtest) | ||
cxx_test(googletest-options-test gtest_main) | ||
cxx_test(googletest-param-test-test gtest | ||
test/googletest-param-test2-test.cc) | ||
cxx_test(googletest-port-test gtest_main) | ||
cxx_test(gtest_pred_impl_unittest gtest_main) | ||
cxx_test(gtest_premature_exit_test gtest | ||
test/gtest_premature_exit_test.cc) | ||
cxx_test(googletest-printers-test gtest_main) | ||
cxx_test(gtest_prod_test gtest_main | ||
test/production.cc) | ||
cxx_test(gtest_repeat_test gtest) | ||
cxx_test(gtest_sole_header_test gtest_main) | ||
cxx_test(gtest_stress_test gtest) | ||
cxx_test(googletest-test-part-test gtest_main) | ||
cxx_test(gtest_throw_on_failure_ex_test gtest) | ||
cxx_test(gtest-typed-test_test gtest_main | ||
test/gtest-typed-test2_test.cc) | ||
cxx_test(gtest_unittest gtest_main) | ||
cxx_test(gtest-unittest-api_test gtest) | ||
cxx_test(gtest_skip_in_environment_setup_test gtest_main) | ||
cxx_test(gtest_skip_test gtest_main) | ||
|
||
############################################################ | ||
# C++ tests built with non-standard compiler flags. | ||
|
||
# MSVC 7.1 does not support STL with exceptions disabled. | ||
if (NOT MSVC OR MSVC_VERSION GREATER 1310) | ||
cxx_library(gtest_no_exception "${cxx_no_exception}" | ||
src/gtest-all.cc) | ||
cxx_library(gtest_main_no_exception "${cxx_no_exception}" | ||
src/gtest-all.cc src/gtest_main.cc) | ||
endif() | ||
cxx_library(gtest_main_no_rtti "${cxx_no_rtti}" | ||
src/gtest-all.cc src/gtest_main.cc) | ||
|
||
cxx_test_with_flags(gtest-death-test_ex_nocatch_test | ||
"${cxx_exception} -DGTEST_ENABLE_CATCH_EXCEPTIONS_=0" | ||
gtest test/googletest-death-test_ex_test.cc) | ||
cxx_test_with_flags(gtest-death-test_ex_catch_test | ||
"${cxx_exception} -DGTEST_ENABLE_CATCH_EXCEPTIONS_=1" | ||
gtest test/googletest-death-test_ex_test.cc) | ||
|
||
cxx_test_with_flags(gtest_no_rtti_unittest "${cxx_no_rtti}" | ||
gtest_main_no_rtti test/gtest_unittest.cc) | ||
|
||
cxx_shared_library(gtest_dll "${cxx_default}" | ||
src/gtest-all.cc src/gtest_main.cc) | ||
|
||
cxx_executable_with_flags(gtest_dll_test_ "${cxx_default}" | ||
gtest_dll test/gtest_all_test.cc) | ||
set_target_properties(gtest_dll_test_ | ||
PROPERTIES | ||
COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1") | ||
endif() | ||
|
||
|
||
|