44###################################
55
66# Define source files
7- set (GECK_SOURCES
8- main.cpp
9-
7+ set (GECK_APP_SOURCES
108 Application.h
119 Application.cpp
1210
@@ -188,17 +186,21 @@ set(GECK_SOURCES
188186 ${CMAKE_SOURCE_DIR} /resources/icons.qrc
189187)
190188
189+ # Reusable application library for the executable and UI tests
190+ add_library (gecko_app STATIC ${GECK_APP_SOURCES} )
191+ add_library (gecko::app ALIAS gecko_app )
192+
191193# Platform-specific executable settings
192194if (WIN32 )
193- add_executable (${PROJECT_NAME} WIN32 ${GECK_SOURCES} )
195+ add_executable (${PROJECT_NAME} WIN32 main.cpp )
194196 # Add Windows resource file for icon
195197 target_sources (${PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR} /resources/gecko.rc )
196198elseif (APPLE )
197199 # Add icon to bundle
198200 set (MACOSX_BUNDLE_ICON_FILE gecko.icns)
199201 set (APP_ICON_MACOSX ${CMAKE_SOURCE_DIR} /resources/gecko.icns)
200202 set_source_files_properties (${APP_ICON_MACOSX} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources" )
201- add_executable (${PROJECT_NAME} MACOSX_BUNDLE ${GECK_SOURCES} ${APP_ICON_MACOSX} )
203+ add_executable (${PROJECT_NAME} MACOSX_BUNDLE main.cpp ${APP_ICON_MACOSX} )
202204
203205 # Set bundle properties
204206 set_target_properties (${PROJECT_NAME} PROPERTIES
@@ -209,7 +211,7 @@ elseif(APPLE)
209211 MACOSX_BUNDLE_BUNDLE_VERSION "1"
210212 )
211213else ()
212- add_executable (${PROJECT_NAME} ${GECK_SOURCES} )
214+ add_executable (${PROJECT_NAME} main.cpp )
213215endif ()
214216
215217###################################
@@ -333,7 +335,7 @@ PRIVATE
333335 gecko::spdlog
334336)
335337
336- target_link_libraries (${PROJECT_NAME} PRIVATE
338+ target_link_libraries (gecko_app PUBLIC
337339 SFML::System SFML::Graphics SFML::Window
338340 Qt6::Core
339341 Qt6::Widgets
@@ -343,9 +345,12 @@ target_link_libraries(${PROJECT_NAME} PRIVATE
343345 vault
344346)
345347
346- target_include_directories (${PROJECT_NAME} PRIVATE
347- "${CMAKE_SOURCE_DIR} /vendor/vfspp/include"
348- "${CMAKE_BINARY_DIR} /generated" )
348+ target_include_directories (gecko_app PUBLIC
349+ ${CMAKE_CURRENT_SOURCE_DIR}
350+ "${CMAKE_BINARY_DIR} /generated"
351+ )
352+
353+ target_link_libraries (${PROJECT_NAME} PRIVATE gecko_app )
349354
350355# copy shared external libraries to the build directory for Windows builds
351356if (WIN32 )
0 commit comments