gpt4 book ai didi

cmake - 将 google-test 添加到 CMake 项目中的子文件夹

转载 作者:行者123 更新时间:2023-12-04 14:48:22 25 4
gpt4 key购买 nike

我刚刚将 google-test 源代码添加到 libs/gtest-1.6.4我项目中的目录。有一个libs/gtest-1.6.4/CMakeLists.txt文件。在最顶端 CMakeLists.txt , 我加了 add_subdirectory('libs/gtest-1.6.4') .该项目的结构是

|- CMakeLists.txt 
|- src
|- CMakeLists.txt
|- *.h and *.cc
|- libs
|- gtest-1.6.4
|- CMakeLists.txt
|- gtest source code etc.
|- other subdirectories

现在我添加 #include "gtest/gtest.h"在其中一个头文件中。编译失败
gtest/gtest.h: No such file or directory
compilation terminated.

这是我的 src/CMakeLists.txt 的片段文件。
set( Boost_USE_STATIC_LIBS ON )
find_package( Boost COMPONENTS graph regex system filesystem thread REQUIRED)

.. Normal cmake stuff ...
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS} )

# This line is added for google-test
INCLUDE_DIRECTORIES(${GTEST_INCLUDE_DIRS} ${COMMON_INCLUDES})

add_executable(Partitioner
print_function.cc
methods.cc
partitioner.cc
main.cc
)

TARGET_LINK_LIBRARIES(Partitioner ${Boost_LIBRARIES})
TARGET_LINK_LIBRARIES(Partitioner ${GTEST_LIBRARIES})

我错过了什么?

最佳答案

看着 GTest's CMakeLists.txt ,看起来他们的包含路径是 ${gtest_SOURCE_DIR}/include .他们还将库定义为名为 gtest 的 CMake 目标。 (这被包裹在一个宏 cxx_library(gtest ...) 中,目前在第 70 行)。

所以看起来你需要做:

...
# This line is added for google-test
INCLUDE_DIRECTORIES(${GTEST_INCLUDE_DIRS} ${COMMON_INCLUDES})
INCLUDE_DIRECTORIES(${gtest_SOURCE_DIR}/include ${COMMON_INCLUDES})
...
TARGET_LINK_LIBRARIES(Partitioner ${Boost_LIBRARIES})
TARGET_LINK_LIBRARIES(Partitioner ${GTEST_LIBRARIES})

TARGET_LINK_LIBRARIES(Partitioner ${Boost_LIBRARIES} gtest)

您还必须确保在您的根 CMakeLists.txt 中,您已经调用了 add_subdirectory(libs/gtest-1.6.4)之前 add_subdirectory(src)以便在“src/CMakeLists.txt”中使用 GTest 变量时正确设置它们。

关于cmake - 将 google-test 添加到 CMake 项目中的子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18043910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com