我正在将一些项目迁移到使用CMake构建系统。现在我正在添加一个使用Catch库的单元测试项目。这是一个头文件库。旧的Visual Studio项目可以正常构建,但是新的CMake项目会出现未解决的外部符号链接器错误。我已经在我的一个源文件中定义了CATCH_CONFIG_MAIN。所有需要进行测试的其他项目的所有cpp文件都已添加,并且链接了其他被测试项目依赖的所有库。尽管如此,我仍然只在从CMake项目生成的代码中出现未解决的外部符号错误:
ChipCountTests.obj : error LNK2019: unresolved external symbol "public: __thiscall Catch::SourceLineInfo::SourceLineInfo(char const *,unsigned int)" (??0SourceLineInfo@Catch@@QAE@PBDI@Z) referenced in function "void __cdecl `anonymous namespace'::`dynamic initializer for 'autoRegistrar1''(void)" (??__EautoRegistrar1@?A0xb4291ec5@@YAXXZ)
1>FlyingChipRewardCalculatorUT.obj : error LNK2001: unresolved external symbol "public: __thiscall Catch::SourceLineInfo::SourceLineInfo(char const *,unsigned int)" (??0SourceLineInfo@Catch@@QAE@PBDI@Z)
显然我错过了从 vcxproj 到
CMakeLists.txt
的一些配置,但目前我无法弄清楚。
#pragma comment( lib, "name-of-catch-library" )
,这将导致链接器自动选择命名的库。 - Richard CrittenCMakeLists.txt
代码? - Florian