我正在遷移一些項目使用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)" ([email protected]@@[email protected]@Z) referenced in function "void __cdecl `anonymous namespace'::`dynamic initializer for 'autoRegistrar1''(void)" ([email protected][email protected]@YAXXZ)
1>FlyingChipRewardCalculatorUT.obj : error LNK2001: unresolved external symbol "public: __thiscall Catch::SourceLineInfo::SourceLineInfo(char const *,unsigned int)" ([email protected]@@[email protected]@Z)
顯然我錯過了從vcxproj增加一些配置到CMakeLists.txt
但我目前還沒有弄明白。
顯然你錯過了一些Catch庫。如果在VS項目的鏈接器部分找不到它們;然後嘗試在Catch的頭文件中查找'#pragma comment(lib,「name-of-catch-library」)'這將導致鏈接器自動拾取指定的庫。 –
@Richard Critten正如我所說的catch庫只是頭文件而且沒有** libs **。 – bobeff
您是否使用CMake集成的「官方」指令? https://github.com/philsquared/Catch/blob/master/docs/build-systems.md(請參閱CMake部分) –