J'essaie de créer google-benchmark et de l'utiliser avec ma bibliothèque en utilisant cmake. J'ai réussi à créer google-benchmark et à exécuter tous ses tests avec succès en utilisant cmake. Je suis malheureusement incapable de le lier correctement avec mon code C ++ dans Windows en utilisant cmake ou cl.
le problème que je pense est que google-benchmark construit la bibliothèque dans le dossier src, c'est-à-dire qu'il est construit dans src / Release / benchmark.lib maintenant je ne peux pas le pointer dans cmake si j'utilise $ {benchmark_LIBRARIES} il recherche la bibliothèque dans le dossier Release en dehors de src, car c'est l'endroit habituel où toutes les bibliothèques sont construites. et il est difficile de trouver des exemples qui fonctionnent dans Windows.
voici deux façons que j'ai essayées, les deux peuvent construire la bibliothèque et tous les tests s'exécutent mais je ne peux pas pointer correctement la bibliothèque vers target_link_library
ExternalProject_Add(googlebenchmark GIT_REPOSITORY https://github.com/google/benchmark.git GIT_TAG master PREFIX googlebenchmark CMAKE_ARGS -DBENCHMARK_DOWNLOAD_DEPENDENCIES=ON BUILD_COMMAND ${CMAKE_COMMAND} --build . --config Release INSTALL_COMMAND "" TEST_COMMAND ${CMAKE_CTEST_COMMAND} --build-config Release )
et
include(ExternalProject) ExternalProject_Add(googlebenchmark GIT_REPOSITORY https://github.com/google/benchmark.git GIT_TAG master SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/googlebenchmark-src" BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/googlebenchmark-build" CONFIGURE_COMMAND ${CMAKE_COMMAND} -B ${CMAKE_CURRENT_BINARY_DIR}/googlebenchmark-build -S ${CMAKE_CURRENT_BINARY_DIR}/googlebenchmark-src -DBENCHMARK_DOWNLOAD_DEPENDENCIES=ON BUILD_COMMAND ${CMAKE_COMMAND} --build ${CMAKE_CURRENT_BINARY_DIR}/googlebenchmark-build --config Release INSTALL_COMMAND "" TEST_COMMAND ${CMAKE_CTEST_COMMAND} ${CMAKE_CURRENT_BINARY_DIR}/googlebenchmark-src ${CMAKE_CURRENT_BINARY_DIR}/googlebenchmark-build --build-config Release )
comment puis-je le lier à mon fichier c ++ try.cpp après cela
3 Réponses :
Je suis venu ici à la recherche d'une solution de copier-coller moi-même mais je ne vois pas de solution claire alors que je vois qu'il y a beaucoup de gens qui regardent cette page, alors voici ce que j'ai fait.
Je n'ai pas utilisé ExternalProject_Add
mais je serais heureux de vous aider si vous me dirigiez vers un exemple de test en cours d'exécution complet que je pourrais vérifier.
C'est ce que j'ai utilisé dans mon projet
include(FetchContent) FetchContent_Declare(googlebenchmark GIT_REPOSITORY https://github.com/google/benchmark ) FetchContent_MakeAvailable(googlebenchmark) target_link_libraries(bench benchmark::benchmark)
Je ne l'ai pas encore essayé sur Windows mais je le ferai la prochaine fois que je démarrerai Win à la maison. Je l'ai essayé sur plusieurs machines Linux.
J'espère que cela aide.
Après avoir recherché une solution fonctionnelle pour Visual Studio 2019, je l'ai finalement fait fonctionner. J'ai créé un exemple pour aider les autres.
CMakeLists.txt comme ci-dessous
cmake_minimum_required(VERSION 3.14) project(g_benchmark) enable_testing() include(FetchContent) ## Project-wide setup set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED YES) set(CMAKE_CXX_EXTENSIONS NO) # Externally provided libraries FetchContent_Declare(googletest GIT_REPOSITORY https://github.com/google/googletest.git GIT_TAG v1.10.x) FetchContent_Declare(googlebenchmark GIT_REPOSITORY https://github.com/google/benchmark.git GIT_TAG master) # need master for benchmark::benchmark FetchContent_MakeAvailable( googletest googlebenchmark) add_executable(g_benchmark main.cpp) target_link_libraries(g_benchmark benchmark::benchmark)
Nécessite la version cmake supérieure à 3.14
$ cmake.
$ cmake --build.
Référence: https://github.com/hohaidang/CPP_Basic2Advance/tree/master/Learning/CMake/g_benchmark
jetez un œil à cet exemple: github.com/RichardDally/MicroBenchmark
nous devons installer un benchmark pour que cela fonctionne correctement?
Oui. L'installation ajoutera certains fichiers aux répertoires communs. Ainsi, les fichiers du package
GoogleBenchmark
peuvent être trouvés par cmake.mais ne pouvons-nous pas l'utiliser sans installer?
Je suppose que personne dans Google n'utilise Windows [cant]