Skip to content

Commit fe46d87

Browse files
committed
[Refactor] refactor CMakeLists.txt for test executables and library linking
1 parent ae0883b commit fe46d87

File tree

1 file changed

+23
-43
lines changed

1 file changed

+23
-43
lines changed

tests/CMakeLists.txt

Lines changed: 23 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,27 @@
1-
# Enable testing
21
enable_testing()
3-
find_package(yaml-cpp REQUIRED)
4-
# Add individual test executables
5-
add_executable(test_mainwindow test_mainwindow.cpp)
6-
add_executable(test_tree test_tree.cpp)
7-
add_executable(test_syntax test_syntax.cpp)
8-
9-
# Make sure the test executables link with the necessary libraries
10-
target_link_libraries(test_mainwindow PRIVATE ${TARGET_NAME} Qt6::Widgets Qt6::Test yaml-cpp)
11-
target_link_libraries(test_tree PRIVATE ${TARGET_NAME} Qt6::Widgets Qt6::Test yaml-cpp)
12-
target_link_libraries(test_syntax PRIVATE ${TARGET_NAME} Qt6::Widgets Qt6::Test yaml-cpp)
13-
14-
# Register each test with CTest
15-
add_test(NAME test_mainwindow COMMAND test_mainwindow)
16-
add_test(NAME test_tree COMMAND test_tree)
17-
add_test(NAME test_syntax COMMAND test_tree)
18-
19-
# Set the runtime output directory for the test executables
20-
set_target_properties(test_mainwindow PROPERTIES
21-
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/build/tests
22-
)
23-
set_target_properties(test_tree PROPERTIES
24-
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/build/tests
25-
)
26-
set_target_properties(test_syntax PROPERTIES
27-
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/build/tests
28-
)
292

30-
set_property(SOURCE test_mainwindow.cpp PROPERTY SKIP_AUTOMOC OFF)
31-
set_property(SOURCE test_tree.cpp PROPERTY SKIP_AUTOMOC OFF)
32-
set_property(SOURCE test_syntax.cpp PROPERTY SKIP_AUTOMOC OFF)
3+
find_package(yaml-cpp REQUIRED CONFIG)
334

34-
# Include directories for tests
35-
target_include_directories(test_mainwindow PRIVATE ${CMAKE_SOURCE_DIR}/include)
36-
target_include_directories(test_tree PRIVATE ${CMAKE_SOURCE_DIR}/include)
37-
target_include_directories(test_syntax PRIVATE ${CMAKE_SOURCE_DIR}/include)
38-
39-
# Ensure proper linking directories are set for yaml-cpp
40-
target_include_directories(test_mainwindow PRIVATE /opt/homebrew/include)
41-
target_include_directories(test_tree PRIVATE /opt/homebrew/include)
42-
target_include_directories(test_syntax PRIVATE /opt/homebrew/include)
43-
44-
target_link_directories(test_mainwindow PRIVATE /opt/homebrew/lib)
45-
target_link_directories(test_tree PRIVATE /opt/homebrew/lib)
46-
target_link_directories(test_syntax PRIVATE /opt/homebrew/lib)
5+
# Add test executables
6+
add_executable(test_mainwindow test_mainwindow.cpp)
7+
add_executable(test_filemanager test_filemanager.cpp)
8+
add_executable(test_syntax test_syntax.cpp)
479

10+
# Link libraries
11+
foreach(test_target IN ITEMS test_mainwindow test_filemanager test_syntax)
12+
target_link_libraries(${test_target} PRIVATE
13+
${EXECUTABLE_NAME}
14+
Qt6::Widgets
15+
Qt6::Test
16+
yaml-cpp::yaml-cpp
17+
)
18+
target_include_directories(${test_target} PRIVATE
19+
${CMAKE_SOURCE_DIR}/include
20+
)
21+
set_target_properties(${test_target} PROPERTIES
22+
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/build/tests
23+
)
24+
set_property(SOURCE ${test_target}.cpp PROPERTY SKIP_AUTOMOC OFF)
25+
26+
add_test(NAME ${test_target} COMMAND ${test_target})
27+
endforeach()

0 commit comments

Comments
 (0)