我刚刚将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
Run Code Online (Sandbox Code Playgroud)
现在我添加#include "gtest/gtest.h"一个头文件.编译失败
gtest/gtest.h: No such file or directory
compilation terminated.
Run Code Online (Sandbox Code Playgroud)
这是我的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})
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
看看GTest的CMakeLists.txt,看起来它们的包含路径是${gtest_SOURCE_DIR}/include.他们还将库定义为一个调用的CMake目标gtest(它包含在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)Run Code Online (Sandbox Code Playgroud)
您还必须确保在您的根CMakeLists.txt之前调用add_subdirectory(libs/gtest-1.6.4) 过, add_subdirectory(src)以便在"src/CMakeLists.txt"中使用GTest变量时正确设置它们.
| 归档时间: |
|
| 查看次数: |
3980 次 |
| 最近记录: |