build: split the 1423-line root CMakeLists into per-directory files with shared target helpers
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
# The two shapes that repeat across src/: a pure static library and its CTest target.
|
||||
# Both are thin pass-throughs — LINK is forwarded to target_link_libraries verbatim, so
|
||||
# PUBLIC/PRIVATE keywords and link order stay visible at the call site rather than being
|
||||
# invented by the helper. Targets that genuinely deviate are written out longhand.
|
||||
|
||||
# Every pure library carries src/ as a PUBLIC include dir: headers are included rooted
|
||||
# there ("core/json/json.h"), so a consumer needs only the link edge.
|
||||
function(reasampler_pure_library name)
|
||||
cmake_parse_arguments(ARG "" "" "SOURCES;LINK" ${ARGN})
|
||||
add_library(${name} STATIC ${ARG_SOURCES})
|
||||
target_include_directories(${name} PUBLIC ${REASAMPLER_SRC_DIR})
|
||||
if(ARG_LINK)
|
||||
target_link_libraries(${name} ${ARG_LINK})
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# Test naming is exceptionless: target <name>_tests is built from tests/test_<name>.cpp
|
||||
# and registered under its own target name.
|
||||
function(reasampler_test name)
|
||||
cmake_parse_arguments(ARG "" "" "LINK" ${ARGN})
|
||||
add_executable(${name}_tests ${REASAMPLER_TESTS_DIR}/test_${name}.cpp)
|
||||
target_link_libraries(${name}_tests PRIVATE ${ARG_LINK})
|
||||
add_test(NAME ${name}_tests COMMAND ${name}_tests)
|
||||
endfunction()
|
||||
Reference in New Issue
Block a user