doctest

FORK: The fastest feature-rich C++11/14/17/20 single-header testing framework
git clone https://git.neptards.moe/neptards/doctest.git
Log | Files | Refs | README

CMakeLists.txt (1556B)


      1 # create object libraries instead of static libraries
      2 add_library(lib_1 OBJECT lib_1_src1.cpp lib_1_src2.cpp)
      3 add_library(lib_2 OBJECT lib_2_src.cpp)
      4 add_executable(exe_with_static_libs main.cpp $<TARGET_OBJECTS:lib_1> $<TARGET_OBJECTS:lib_2>)
      5 target_link_libraries(exe_with_static_libs doctest)
      6 
      7 # object libraries cannot "link" to any target so this is how we get the INTERFACE include directories of the doctest target
      8 get_property(doctest_include_dir TARGET doctest PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
      9 target_include_directories(lib_1 PRIVATE ${doctest_include_dir})
     10 target_include_directories(lib_2 PRIVATE ${doctest_include_dir})
     11 
     12 # alternatively we could create static libraries and use "doctest_force_link_static_lib_in_target"
     13 #add_library(lib_1 STATIC lib_1_src1.cpp lib_1_src2.cpp)
     14 #add_library(lib_2 STATIC lib_2_src.cpp)
     15 #add_executable(exe_with_static_libs main.cpp)
     16 #target_link_libraries(exe_with_static_libs lib_1)
     17 #target_link_libraries(exe_with_static_libs lib_2)
     18 #include(doctest_force_link_static_lib_in_target.cmake)
     19 #doctest_force_link_static_lib_in_target(exe_with_static_libs lib_1)
     20 #doctest_force_link_static_lib_in_target(exe_with_static_libs lib_2)
     21 
     22 # group them together in a single folder inside IDEs
     23 set_target_properties(lib_1 PROPERTIES FOLDER exe_with_static_libs)
     24 set_target_properties(lib_2 PROPERTIES FOLDER exe_with_static_libs)
     25 set_target_properties(exe_with_static_libs PROPERTIES FOLDER exe_with_static_libs)
     26 
     27 doctest_add_test(NAME exe_with_static_libs COMMAND $<TARGET_FILE:exe_with_static_libs> --no-version)