Я пытаюсь скомпилировать цель модульного тестирования с помощью googletest.Хотя он работает в одном проекте, он не может соединиться в другом проекте, и я пытаюсь понять, почему.
link.txt
, сгенерированный CMake:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -stdlib=libc++ -std=gnu++11 -g -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/runTests.dir/ATAppTests.cpp.o -o runTests ../../src/targetLib.a ../../lib/libgtestd.a ../../lib/libgtest_maind.a ../../lib/libgmockd.a ../../lib/libgmock_maind.a ../../lib/libgmockd.a ../../lib/libgtestd.a
результат выполнения этой команды:
Undefined symbols for architecture x86_64:
"testing::internal::MakeAndRegisterTestInfo(char const*, char const*, char const*, char const*, void const*, void (*)(), void (*)(), testing::internal::TestFactoryBase*)", referenced from:
___cxx_global_var_init in ATAppTests.cpp.o
Однако, выполнение nm
указывает на наличие символа:
$ nm --demangle ../../lib/libgtestd.a | grep 'MakeAndRegister'
000000000000ebe0 T testing::internal::MakeAndRegisterTestInfo(char const*, char const*, char const*, char const*, testing::internal::CodeLocation, void const*, void (*)(), void (*)(), testing::internal::TestFactoryBase*)
Я не уверен, куда идти!