我将改用柯南,希望这将简化用户安装我的软件包的过程。没关系,直到我开始将gtest添加到我的包中。
在安装过程中,我收到消息
gtest/1.8.1@bincrafters/stable: Package installed
conanfile.txt imports(): Copied 4 '.a' files: libgmockd.a, libgtestd.a, libgmock_maind.a, libgtest_maind.a
但是,在构建过程中,我收到:
/usr/bin/ld: cannot find -lgmock_maind
/usr/bin/ld: cannot find -lgmockd
/usr/bin/ld: cannot find -lgtestd
我的CMakeLists.txt文件包含
target_link_libraries(
${PROJECT_NAME}_GTEST
Modules
${CONAN_LIBS}
)
缺少什么?我可以提供一些
link_directories(?)
争论?
(与此同时,经过一些试验,我成功了:不仅如此
link_directories(${CONAN_LIB_DIRS_GTEST})
是必需的,但还必须清除柯南的.data。)
答案 0 :(得分:0)
您使用的是什么发生器?
我在conanfile.txt中的“要求”部分中有此
gtest/[~=1.8]@bincrafters/stable
这就是我在那部分中要给发电机的东西
cmake_find_package
cmake_paths
并在CMakeLists.txt
中include(${CMAKE_BINARY_DIR}/conan_paths.cmake)
find_package(gtest REQUIRED)
add_dependencies(something gtest::gtest)
target_link_libraries(something gtest::gtest)
请注意,FindGTest是一个内置模块,而Findgtest.cmake是conan在构建目录中生成的文件。
答案 1 :(得分:0)
gtest
的Bincrafters软件包已被标记为已过时,您应该在柯南中心使用该软件包。
为此,只需将柯南食谱添加到conanfile.txt/py
。
假设您使用普通的conanfile.txt
:
# conanfile.txt
[requires]
gtest/1.10.0
[generators]
cmake
然后您可以运行conan install
然后将柯南指令添加到项目的CMakeLists.txt
:
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup()
target_link_libraries(${PROJECT_NAME} ${CONAN_LIBS})
您可以打印一条消息以查看包含的库:
message("-- Conan libs: ${CONAN_LIBS}")
。
这应该同时包含gtest
和gmock
。
最后,仅包含标题,并使用框架:
#include "gtest/gtest.h"
TEST(TestName, Foo)
{
EXPECT_TRUE(true);
}