1
0
mirror of https://github.com/CLIUtils/CLI11.git synced 2025-05-05 22:53:52 +00:00
CLI11/tests/CMakeLists.txt
2018-04-18 18:11:11 -04:00

85 lines
2.4 KiB
CMake

set(GOOGLE_TEST_INDIVIDUAL OFF)
include(AddGoogletest)
set(CLI11_TESTS
HelpersTest
IniTest
SimpleTest
AppTest
CreationTest
SubcommandTest
HelpTest
NewParseTest
OptionalTest
)
set(CLI11_MULTIONLY_TESTS
TimerTest
)
# Only affects current directory, so safe
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
foreach(T ${CLI11_TESTS})
add_executable(${T} ${T}.cpp ${CLI11_headers})
target_link_libraries(${T} PUBLIC CLI11)
add_gtest(${T})
if(CLI11_SINGLE_FILE AND CLI11_SINGLE_FILE_TESTS)
add_executable(${T}_Single ${T}.cpp)
target_link_libraries(${T}_Single PUBLIC CLI11_SINGLE)
add_gtest(${T}_Single)
set_target_properties(${T}_Single
PROPERTIES
FOLDER "Tests Single File")
endif()
endforeach()
foreach(T ${CLI11_MULTIONLY_TESTS})
add_executable(${T} ${T}.cpp ${CLI11_headers})
target_link_libraries(${T} PUBLIC CLI11)
add_gtest(${T})
endforeach()
# Link test (build error if inlines missing)
add_library(link_test_1 link_test_1.cpp)
target_link_libraries(link_test_1 PUBLIC CLI11)
set_target_properties(link_test_1 PROPERTIES FOLDER "Tests")
add_executable(link_test_2 link_test_2.cpp)
target_link_libraries(link_test_2 PUBLIC CLI11 link_test_1)
add_gtest(link_test_2)
# Add informational printout
# Force this to be in a standard location so CTest can find it
add_executable(informational informational.cpp)
target_link_libraries(informational PUBLIC CLI11)
set_target_properties(informational PROPERTIES
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}"
RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}"
RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_BINARY_DIR}"
RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL "${CMAKE_BINARY_DIR}"
)
# Adding this printout to CTest
file(WRITE "${PROJECT_BINARY_DIR}/CTestCustom.cmake"
"set(CTEST_CUSTOM_PRE_TEST \"${CMAKE_BINARY_DIR}/informational\")"
)
# Add boost to test boost::optional if available
find_package(Boost 1.58)
if(Boost_FOUND)
target_link_libraries(informational PUBLIC Boost::boost)
target_link_libraries(OptionalTest PUBLIC Boost::boost)
# Enforce Boost::Optional even if __has_include is missing on your compiler
target_compile_definitions(informational PUBLIC CLI11_BOOST_OPTIONAL)
target_compile_definitions(OptionalTest PUBLIC CLI11_BOOST_OPTIONAL)
endif()