build: Improve build system (#327)

* *Add top level CMakeLists.txt, to make it easier to use both independently and from within other projects
* Add a unit_test target, to attach all unit tests to

* * Fix unit tests for windows
* Silence cmake warning regarding missing top project
* update .gitignore for vscode

---------

Co-authored-by: BobSmun <6492115+BobSmun@users.noreply.github.com>
This commit is contained in:
BobSmun
2024-12-17 03:37:38 +08:00
committed by GitHub
parent 63504f59a1
commit e026ff187e
7 changed files with 53 additions and 30 deletions

View File

@@ -17,7 +17,7 @@ add_executable(patterns_tests
target_include_directories(patterns_tests PRIVATE include)
target_link_libraries(patterns_tests PRIVATE libpl fmt::fmt-header-only)
set_target_properties(patterns_tests PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
set_target_properties(patterns_tests PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
message(STATUS "Adding Pattern Tests")
foreach (pattern IN LISTS PATTERNS)
@@ -33,13 +33,14 @@ foreach (pattern IN LISTS PATTERNS)
foreach (TEST_FILE IN LISTS TEST_FILES)
get_filename_component(TEST_FILENAME ${TEST_FILE} NAME)
set(TEST_NAME "Patterns/${PATTERN_NAME}/${TEST_FILENAME}")
add_test(NAME ${TEST_NAME} COMMAND patterns_tests "${PATTERN_NAME}" "${pattern}" "${PATTERN_INCLUDES}" "${TEST_FILE}" WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
add_test(NAME ${TEST_NAME} COMMAND patterns_tests "${PATTERN_NAME}" "${pattern}" "${PATTERN_INCLUDES}" "${TEST_FILE}" WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set_tests_properties(${TEST_NAME} PROPERTIES SKIP_RETURN_CODE 77)
endforeach ()
else ()
set(TEST_NAME "Patterns/${PATTERN_NAME}")
add_test(NAME ${TEST_NAME} COMMAND patterns_tests "${PATTERN_NAME}" "${pattern}" "${PATTERN_INCLUDES}" WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
add_test(NAME ${TEST_NAME} COMMAND patterns_tests "${PATTERN_NAME}" "${pattern}" "${PATTERN_INCLUDES}" WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set_tests_properties(${TEST_NAME} PROPERTIES SKIP_RETURN_CODE 77)
message(STATUS " No test file available for ${PATTERN_NAME} pattern")
endif ()
endforeach ()
add_dependencies(unit_tests ${PROJECT_NAME})