【发布时间】:2013-08-04 14:18:27
【问题描述】:
我刚刚在我的项目中将 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 文件的 sn-p。
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 源代码添加到您的源代码树中?您可以使用 CMake 的
ExternalProject模块下载 GTest 并将其构建到您的构建树中,而不是将 3rd 方代码添加到您自己的源代码树中。我有一个答案 here 显示如何做到这一点。 -
是的。但是我们使用私有 git 存储库。我们尝试将大部分库保留在项目中,以便我们以后不必担心版本不兼容。
-
来晚了,但只是想说我们使用 git 子模块进行 gtest 效果很好。
标签: cmake googletest