VisualStudio 2019 で cmake との親和性が高くなったらしいが、端々で躓く。今後参考になりそうな箇所メモ残す。
gtest.lib gtestd.lib gtest_main.lib gtest_maind.lib あたりが見つからない
LNK1104 のエラーは原因が多くてなかなか正解にたどり着けない。
VSのテンプレートに任せて「Google Test」でプロジェクトを作ったりすると、元のフォルダパスが少々長いと簡単に gtest.lib へのパスが深くなってしまう。
https://docs.microsoft.com/ja-jp/cpp/error-messages/tool-errors/linker-tools-error-lnk1104?view=vs-2019#paths-that-are-too-long
260文字以内に抑えるためにプロジェクトパスを短くする必要がある。
googletest は cmake に任せたい
Google Test勉強録 (1) CMakeでのビルド 参考にするのがしっくり来た。
Runtime 不一致エラー
マルチスレッドとかマルチスレッドDLLとかそういうあたりなんだけど、これも cmake で解決したほうがいい。
CMakeでCRTライブラリを静的リンクするVisual Studioプロジェクトを出力する
上のと合わせると、ルートの CMakelists.txtは、
cmake_minimum_required (VERSION 3.8)
project ("sample_project")
if(MSVC)
string(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG})
string(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_MINSIZEREL ${CMAKE_C_FLAGS_MINSIZEREL})
string(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE})
string(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_RELWITHDEBINFO ${CMAKE_C_FLAGS_RELWITHDEBINFO})
string(REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG})
string(REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_MINSIZEREL ${CMAKE_CXX_FLAGS_MINSIZEREL})
string(REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE})
string(REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_RELWITHDEBINFO ${CMAKE_CXX_FLAGS_RELWITHDEBINFO})
endif(MSVC)
enable_testing()
add_subdirectory(src)
add_subdirectory(test)
な感じになる。
ひとまず今んとこ以上