@@ -206,13 +206,13 @@ elseif(LINUX)
206206
207207endif ()
208208
209- if (${GA_BUILD_SAMPLE} )
210- if (${GA_SHARED_LIB} )
211- add_subdirectory ("${CMAKE_CURRENT_SOURCE_DIR} /sample_shared" )
212- else ()
213- add_subdirectory ("${CMAKE_CURRENT_SOURCE_DIR} /sample" )
214- endif ()
215- endif ()
209+ if (${GA_BUILD_SAMPLE} )
210+ if (${GA_SHARED_LIB} )
211+ add_subdirectory ("${CMAKE_CURRENT_SOURCE_DIR} /sample_shared" )
212+ else ()
213+ add_subdirectory ("${CMAKE_CURRENT_SOURCE_DIR} /sample" )
214+ endif ()
215+ endif ()
216216
217217add_library (GameAnalytics ${LIB_TYPE} ${CPP_SOURCES} )
218218target_link_libraries (GameAnalytics PRIVATE ${LIBS} PUBLIC ${PUBLIC_LIBS} )
@@ -221,43 +221,52 @@ message(STATUS "CMAKE_EXE_LINKER_FLAGS: ${CMAKE_EXE_LINKER_FLAGS}")
221221message (STATUS "CMAKE_SHARED_LINKER_FLAGS: ${CMAKE_SHARED_LINKER_FLAGS} " )
222222# --------------------------- Google Test Setup --------------------------- #
223223
224- # Set Project Name
225- set (UT_PROJECT_NAME "${PROJECT_NAME} UnitTests" )
224+ # Only build tests for static library builds
225+ # Shared library builds don't export internal symbols needed by tests
226+ if (NOT GA_SHARED_LIB)
227+ message (STATUS "Building unit tests (tests are only available for static library builds)" )
228+
229+ # Set Project Name
230+ set (UT_PROJECT_NAME "${PROJECT_NAME} UnitTests" )
226231
227- # Add Google Test
228- set (GTEST_DIR "${EXTERNALS_DIR} /googletest" )
229- add_subdirectory (${GTEST_DIR} ${PROJECT_SOURCE_DIR} /gtest_build )
232+ # Add Google Test
233+ set (GTEST_DIR "${EXTERNALS_DIR} /googletest" )
234+ add_subdirectory (${GTEST_DIR} ${PROJECT_SOURCE_DIR} /gtest_build )
230235
231- # Add tests
232- enable_testing ()
236+ # Add tests
237+ enable_testing ()
233238
234- ########################################
235- # Test files
236- ########################################
239+ ########################################
240+ # Test files
241+ ########################################
237242
238- file (GLOB_RECURSE TEST_SRC_FILES "${PROJECT_SOURCE_DIR} /test/*.cpp" )
243+ file (GLOB_RECURSE TEST_SRC_FILES "${PROJECT_SOURCE_DIR} /test/*.cpp" )
239244
240- ########################################
241- # Unit Tests
242- #######################################
243- add_executable (${UT_PROJECT_NAME} ${TEST_SRC_FILES} )
245+ ########################################
246+ # Unit Tests
247+ #######################################
248+ add_executable (${UT_PROJECT_NAME} ${TEST_SRC_FILES} )
244249
245- ########################################
246- # Standard linking to gtest and gmock components
247- ########################################
248- target_link_libraries (${UT_PROJECT_NAME} gtest gtest_main gmock_main )
250+ ########################################
251+ # Standard linking to gtest and gmock components
252+ ########################################
253+ target_link_libraries (${UT_PROJECT_NAME} gtest gtest_main gmock_main )
249254
250- ########################################
251- # Linking to GA SDK
252- ########################################
253- target_link_libraries (${UT_PROJECT_NAME} ${PROJECT_NAME} )
255+ ########################################
256+ # Linking to GA SDK
257+ ########################################
258+ target_link_libraries (${UT_PROJECT_NAME} ${PROJECT_NAME} )
254259
255- ########################################
256- add_test (NAME ${UT_PROJECT_NAME} COMMAND GameAnalyticsUnitTests )
260+ ########################################
261+ add_test (NAME ${UT_PROJECT_NAME} COMMAND GameAnalyticsUnitTests )
262+ else ()
263+ message (STATUS "Skipping unit tests (not available for shared library builds)" )
264+ endif ()
257265
258266# --------------------------- Code Coverage Setup --------------------------- #
259267
260- if (ENABLE_COVERAGE)
268+ # Coverage requires tests, which are only available for static library builds
269+ if (ENABLE_COVERAGE AND NOT GA_SHARED_LIB)
261270 find_program (GCOV_PATH gcov )
262271 if (NOT GCOV_PATH)
263272 message (WARNING "program gcov not found" )
0 commit comments