【发布时间】:2018-05-28 05:37:48
【问题描述】:
我目前正在尝试链接 Google Test 以为我的 Visual Studio 项目创建测试套件,但无法正确链接。
CMakeLists.txt
cmake_minimum_required (VERSION 3.11)
include_directories(include)
include_directories(${GTEST_INCLUDE_DIRS})
include_directories(${SERVER_INCLUDE_DIR})
include_directories(${OPENSSL_INCLUDE_DIR})
include_directories(${MESSAGE_HELPER_INCLUDE_DIR})
include_directories(${PROTOBUF_INCLUDE_DIR})
include_directories(${PROTOBUF_MESSAGE_INCLUDE_DIR})
file(GLOB MessageHelperLibraryTestCPPFiles "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp")
file(GLOB MessageHelperLibraryTestHeaderFiles "${CMAKE_CURRENT_SOURCE_DIR}/include/*.h")
add_executable (MessageHelperLibraryTests
${MessageHelperLibraryTestCPPFiles} ${MessageHelperLibraryTestHeaderFiles})
target_link_libraries(MessageHelperLibraryTests MessageHelperLibrary)
message(WARNING ${GTEST_BOTH_LIBRARIES})
#set(GTEST_MSVC_SEARCH MT)
target_link_libraries(MessageHelperLibraryTests ${OPENSSL_LIBRARIES})
target_link_libraries(MessageHelperLibraryTests ${PROTOBUF_LIBRARIES})
target_link_libraries(MessageHelperLibraryTests ${GTEST_BOTH_LIBRARIES})
add_dependencies(MessageHelperLibraryTests MessageHelperLibrary)
add_dependencies(MessageHelperLibraryTests ProtoMessages)
#add_test(AllTestsInMessageHelperLibraryTests MessageHelperLibraryTests)
main.cpp
#include <gtest/gtest.h>
int main(int argc, char *argv[])
{
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
存在构建错误。
[ERROR] LNK2019 unresolved external symbol "void __cdecl testing::InitGoogleTest(int *,char * *)" (?InitGoogleTest@testing@@YAXPEAHPEAPEAD@Z) referenced in function main
${GTEST_BOTH_LIBRARIES} 的输出是 D:/Programming_Apps/googletest/build/googlemock/gtest/Release/gtest.libD:/Programming_Apps/googletest/build/googlemock/gtest/Release/gtest_main.lib,这是这些库的正确位置,但似乎仍然无法正确找到并链接库。另一个项目不包含 main,因为它也是一个库,所以我不确定为什么会发生此错误。
【问题讨论】:
标签: c++ cmake googletest