在使用GTest和CMake构建C++项目时,可能会遇到“multiple definition”错误。这通常是因为CMakeLists.txt文件中的配置不正确,导致多个源文件包含了相同的符号。为了解决这个问题,请遵循以下步骤:
find_package(GTest REQUIRED)
include_directories(${GTEST_INCLUDE_DIRS})
add_executable(my_test test1.cpp test2.cpp)
target_link_libraries(my_test ${GTEST_BOTH_LIBRARIES})
extern
关键字声明它们。
common
的子目录,其中包含一些公共源文件,请在主CMakeLists.txt文件中添加以下内容:
add_subdirectory(common)
然后在common/CMakeLists.txt
文件中添加相应的源文件和目标:
add_library(common_lib common1.cpp common2.cpp)
最后,在主CMakeLists.txt文件中将公共库链接到您的测试目标:
target_link_libraries(my_test common_lib ${GTEST_BOTH_LIBRARIES})
领取专属 10元无门槛券
手把手带您无忧上云