google / googletest

GoogleTest - Google Testing and Mocking Framework
https://google.github.io/googletest/
BSD 3-Clause "New" or "Revised" License
33.68k stars 9.98k forks source link

Cannot link gtest #4558

Open FTamas77 opened 3 weeks ago

FTamas77 commented 3 weeks ago

Describe the issue

I cannot link the gtest. Linker error.

Steps to reproduce the problem

My conanfile:

[requires]
boost/1.81.0
gtest/1.14.0

[generators]
CMakeDeps
CMakeToolchain

[options]
boost/*:without_log=False

My profile

  Profile build:
  [settings]
  arch=x86_64
  build_type=Release
  compiler=msvc
  compiler.cppstd=17
  compiler.runtime=dynamic
  compiler.runtime_type=Release
  compiler.version=193
  os=Windows
  [conf]

My cmakefile:

# Find the Google Test package
find_package(GTest REQUIRED)

# Create a test executable
add_executable(myTest causalDiscoveryTest.cpp)

# Link the test executable with the Google Test libraries
target_link_libraries(myTest causalDiscovery GTest::GTest GTest::Main)
target_include_directories(myTest PRIVATE ${GTest_INCLUDE_DIRS})

# Debug
message("GTest_INCLUDE_DIRS: ${GTest_INCLUDE_DIRS}") -----> OK and must included
message("GTEST_BOTH_LIBRARIES: ${GTEST_BOTH_LIBRARIES}") -----> empty, all libs related empty

# Add a test that runs your test executable
add_test(NAME myTest COMMAND myTest )

What version of GoogleTest are you using?

1.14.0

What operating system and version are you using?

Windows 11

What compiler and version are you using?

Visual Studio 2022

What build system are you using?

cmake version 3.29.1

Additional context

No response

EDIT:

config looks good:

1> [CMake] -------- Installing package gtest/1.14.0 (2 of 4) --------
1> [CMake] gtest/1.14.0: Building from source
1> [CMake] gtest/1.14.0: Package gtest/1.14.0:036052bef335957d326ed883a2c2dbad14582260
1> [CMake] gtest/1.14.0: Copying sources to build folder
1> [CMake] gtest/1.14.0: Building your package in D:\conan_data\b\gtest7c0542e17ee6b\b
1> [CMake] gtest/1.14.0: Calling generate()
1> [CMake] gtest/1.14.0: Generators folder: D:\conan_data\b\gtest7c0542e17ee6b\b\build\generators
1> [CMake] gtest/1.14.0: CMakeToolchain generated: conan_toolchain.cmake
1> [CMake] gtest/1.14.0: CMakeToolchain generated: CMakePresets.json
1> [CMake] gtest/1.14.0: CMakeToolchain generated: ..\..\src\CMakeUserPresets.json
1> [CMake] gtest/1.14.0: Generating aggregated env files
1> [CMake] gtest/1.14.0: Generated aggregated env files: ['conanbuild.bat', 'conanrun.bat']
1> [CMake] gtest/1.14.0: Calling build()
1> [CMake] gtest/1.14.0: apply_conandata_patches(): No patches defined in conandata
1> [CMake] gtest/1.14.0: Running CMake.configure()
1> [CMake] gtest/1.14.0: RUN: cmake -G "Visual Studio 17 2022" -DCMAKE_TOOLCHAIN_FILE="D:/conan_data/b/gtest7c0542e17ee6b/b/build/generators/conan_toolchain.cmake" -DCMAKE_INSTALL_PREFIX="D:/conan_data/b/gtest7c0542e17ee6b/p" -DCMAKE_POLICY_DEFAULT_CMP0091="NEW" "D:\conan_data\b\gtest7c0542e17ee6b\b\src"
1> [CMake] -- Using Conan toolchain: D:/conan_data/b/gtest7c0542e17ee6b/b/build/generators/conan_toolchain.cmake
1> [CMake] -- Conan toolchain: CMAKE_GENERATOR_TOOLSET=v143
1> [CMake] -- Conan toolchain: C++ Standard 17 with extensions OFF
1> [CMake] -- Conan toolchain: Setting BUILD_SHARED_LIBS = OFF
1> [CMake] -- Selecting Windows SDK version 10.0.20348.0 to target Windows 10.0.22631.
1> [CMake] -- The C compiler identification is MSVC 19.40.33811.0
1> [CMake] -- The CXX compiler identification is MSVC 19.40.33811.0
1> [CMake] -- Detecting C compiler ABI info
1> [CMake] -- Detecting C compiler ABI info - done
1> [CMake] -- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/2022/Professional/VC/Tools/MSVC/14.40.33807/bin/Hostx64/x64/cl.exe - skipped
1> [CMake] -- Detecting C compile features
1> [CMake] -- Detecting C compile features - done
1> [CMake] -- Detecting CXX compiler ABI info
1> [CMake] -- Detecting CXX compiler ABI info - done
1> [CMake] -- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Professional/VC/Tools/MSVC/14.40.33807/bin/Hostx64/x64/cl.exe - skipped
1> [CMake] -- Detecting CXX compile features
1> [CMake] -- Detecting CXX compile features - done
1> [CMake] -- Found Python3: C:/Users/dfgh/AppData/Local/Programs/Python/Python310/python.exe (found version "3.10.6") found components: Interpreter
1> [CMake] -- Performing Test CMAKE_HAVE_LIBC_PTHREAD
1> [CMake] -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
1> [CMake] -- Looking for pthread_create in pthreads
1> [CMake] -- Looking for pthread_create in pthreads - not found
1> [CMake] -- Looking for pthread_create in pthread
1> [CMake] -- Looking for pthread_create in pthread - not found
1> [CMake] -- Found Threads: TRUE
1> [CMake] -- Configuring done (19.7s)
1> [CMake] -- Generating done (0.1s)
1> [CMake] -- Build files have been written to: D:/conan_data/b/gtest7c0542e17ee6b/b/build
1> [CMake] 
1> [CMake] gtest/1.14.0: Running CMake.build()
1> [CMake] gtest/1.14.0: RUN: cmake --build "D:\conan_data\b\gtest7c0542e17ee6b\b\build" --config Release
1> [CMake] MSBuild version 17.10.4+10fbfbf2e for .NET Framework
1> [CMake] 
1> [CMake]   1>Checking Build System
1> [CMake]   Building Custom Rule D:/conan_data/b/gtest7c0542e17ee6b/b/src/googlemock/CMakeLists.txt
1> [CMake]   gtest-all.cc
1> [CMake]   gmock-all.cc
1> [CMake]   gmock.vcxproj -> D:\conan_data\b\gtest7c0542e17ee6b\b\build\lib\Release\gmock.lib
1> [CMake]   Building Custom Rule D:/conan_data/b/gtest7c0542e17ee6b/b/src/googlemock/CMakeLists.txt
1> [CMake]   gtest-all.cc
1> [CMake]   gmock-all.cc
1> [CMake]   gmock_main.cc
1> [CMake]   gmock_main.vcxproj -> D:\conan_data\b\gtest7c0542e17ee6b\b\build\lib\Release\gmock_main.lib
1> [CMake]   Building Custom Rule D:/conan_data/b/gtest7c0542e17ee6b/b/src/googletest/CMakeLists.txt
1> [CMake]   gtest-all.cc
1> [CMake]   gtest.vcxproj -> D:\conan_data\b\gtest7c0542e17ee6b\b\build\lib\Release\gtest.lib
1> [CMake]   Building Custom Rule D:/conan_data/b/gtest7c0542e17ee6b/b/src/googletest/CMakeLists.txt
1> [CMake]   gtest_main.cc
1> [CMake]   gtest_main.vcxproj -> D:\conan_data\b\gtest7c0542e17ee6b\b\build\lib\Release\gtest_main.lib
1> [CMake]   Building Custom Rule D:/conan_data/b/gtest7c0542e17ee6b/b/src/CMakeLists.txt
1> [CMake] 
1> [CMake] gtest/1.14.0: Package '036052bef335957d326ed883a2c2dbad14582260' built
1> [CMake] gtest/1.14.0: Build folder D:\conan_data\b\gtest7c0542e17ee6b\b\build
1> [CMake] gtest/1.14.0: Generating the package
1> [CMake] gtest/1.14.0: Packaging in folder D:\conan_data\b\gtest7c0542e17ee6b\p
1> [CMake] gtest/1.14.0: Calling package()
1> [CMake] gtest/1.14.0: Running CMake.install()
1> [CMake] gtest/1.14.0: RUN: cmake --install "D:\conan_data\b\gtest7c0542e17ee6b\b\build" --config Release --prefix "D:/conan_data/b/gtest7c0542e17ee6b/p"
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gmock
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gmock/gmock-actions.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gmock/gmock-cardinalities.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gmock/gmock-function-mocker.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gmock/gmock-matchers.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gmock/gmock-more-actions.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gmock/gmock-more-matchers.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gmock/gmock-nice-strict.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gmock/gmock-spec-builders.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gmock/gmock.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gmock/internal
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gmock/internal/custom
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gmock/internal/custom/gmock-generated-actions.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gmock/internal/custom/gmock-matchers.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gmock/internal/custom/gmock-port.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gmock/internal/custom/README.md
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gmock/internal/gmock-internal-utils.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gmock/internal/gmock-port.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gmock/internal/gmock-pp.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/lib/gmock.lib
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/lib/gmock_main.lib
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/lib/pkgconfig/gmock.pc
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/lib/pkgconfig/gmock_main.pc
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/lib/cmake/GTest/GTestTargets.cmake
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/lib/cmake/GTest/GTestTargets-release.cmake
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/lib/cmake/GTest/GTestConfigVersion.cmake
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/lib/cmake/GTest/GTestConfig.cmake
1> [CMake] -- Up-to-date: D:/conan_data/b/gtest7c0542e17ee6b/p/include
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gtest
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gtest/gtest-assertion-result.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gtest/gtest-death-test.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gtest/gtest-matchers.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gtest/gtest-message.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gtest/gtest-param-test.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gtest/gtest-printers.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gtest/gtest-spi.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gtest/gtest-test-part.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gtest/gtest-typed-test.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gtest/gtest.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gtest/gtest_pred_impl.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gtest/gtest_prod.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gtest/internal
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gtest/internal/custom
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gtest/internal/custom/gtest-port.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gtest/internal/custom/gtest-printers.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gtest/internal/custom/gtest.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gtest/internal/custom/README.md
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gtest/internal/gtest-death-test-internal.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gtest/internal/gtest-filepath.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gtest/internal/gtest-internal.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gtest/internal/gtest-param-util.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gtest/internal/gtest-port-arch.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gtest/internal/gtest-port.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gtest/internal/gtest-string.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/include/gtest/internal/gtest-type-util.h
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/lib/gtest.lib
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/lib/gtest_main.lib
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/lib/pkgconfig/gtest.pc
1> [CMake] -- Installing: D:/conan_data/b/gtest7c0542e17ee6b/p/lib/pkgconfig/gtest_main.pc
1> [CMake] 
1> [CMake] gtest/1.14.0: package(): Packaged 38 '.h' files
1> [CMake] gtest/1.14.0: package(): Packaged 2 '.md' files: README.md, README.md
1> [CMake] gtest/1.14.0: package(): Packaged 4 '.lib' files: gmock.lib, gmock_main.lib, gtest.lib, gtest_main.lib
1> [CMake] gtest/1.14.0: package(): Packaged 1 file: LICENSE
1> [CMake] gtest/1.14.0: Created package revision fdfd70e7ad14768b8392148c662faa7a
1> [CMake] gtest/1.14.0: Package '036052bef335957d326ed883a2c2dbad14582260' created
1> [CMake] gtest/1.14.0: Full package reference: gtest/1.14.0#25e2a474b4d1aecf5ff4f0555dcdf72c:036052bef335957d326ed883a2c2dbad14582260#fdfd70e7ad14768b8392148c662faa7a
1> [CMake] gtest/1.14.0: Package folder D:\conan_data\b\gtest7c0542e17ee6b\p
1> [CMake] boost/1.81.0: Disabled magic autolinking (smart and magic decisions)
1> [CMake] WARN: deprecated: Usage of deprecated Conan 1.X features that will be removed in Conan 2.X:
1> [CMake] WARN: deprecated:     'cpp_info.names' used in: boost/1.81.0, gtest/1.14.0, zlib/1.3.1, bzip2/1.0.8
1> [CMake] WARN: deprecated:     'cpp_info.build_modules' used in: bzip2/1.0.8
1> [CMake] WARN: deprecated:     'env_info' used in: boost/1.81.0, bzip2/1.0.8
1> [CMake] WARN: deprecated:     'cpp_info.filenames' used in: boost/1.81.0
1> [CMake] WARN: deprecated:     'user_info' used in: boost/1.81.0
1> [CMake] 

Building:

image

FTamas77 commented 3 weeks ago

Finally, I decided to link the folders:

target_link_libraries(myTest
    "D:/conan_data/b/gtestcaa086ac267d4/b/build/lib/Release/gtest.lib"
    "D:/conan_data/b/gtestcaa086ac267d4/b/build/lib/Release/gtest_main.lib")

target_include_directories(myTest PRIVATE "${gtest_INCLUDE_DIRS_RELEASE}")

It was in the source: set(gtest_PACKAGE_FOLDER_RELEASE "D:/conan_data/b/gtestcaa086ac267d4/p")

but that is the source for the headers.

In the past, it worked for me with conan 1.0, now this solution is good for me.