CMake没有找到CxxTest包

时间:2015-05-06 05:23:26

标签: cmake cxxtest

我编写了以下CMakeLists.txt以使用 CxxTest 构建测试人员(它几乎是FindCxxTest提供的标准示例):

cmake_minimum_required(VERSION 2.8)
project(tester)
set(CMAKE_INCLUDE_PATH "${CMAKE_CURRENT_SOURCE_DIR}")
find_package(CxxTest REQUIRED)
if(CXXTEST_FOUND)
    include_directories(${CXXTEST_INCLUDE_DIR})
    enable_testing()
    CXXTEST_ADD_TEST(tester_executable runner.cpp
                        ${CMAKE_CURRENT_SOURCE_DIR}/myTestsuite.h)
endif()

虽然我在cxxtest/TestSuite.h存在的目录中有文件夹cxxtest和文件CMakeLists.txt,但问题是找不到 CxxTest

我已经查看了FindCxxTest.cmake的源代码,看看它有多远,但它甚至找不到路径CXXTEST_INCLUDE_DIR

我是否必须设置其他搜索路径?我正在Windows上进行测试。

1 个答案:

答案 0 :(得分:1)

find_path不会搜索当前列表目录。也就是说,仅仅因为从当前的CMakeLists.txt可以获得相对路径,并不意味着它将被找到。您可以在the manual中找到搜索顺序的完整说明。

快速而肮脏的解决方案是将相应的目录添加到CMAKE_PREFIX_PATH

 set(CMAKE_PREFIX_PATH ${CMAKE_CURRENT_LIST_DIR})
 find_package(CxxTest)

通过CMAKE_SYSTEM_PREFIX_PATHCMAKE_INCLUDE_PATHCMAKE_LIBRARY_PATHCMAKE_PROGRAM_PATH变量可以获得更精细的控制。此外,一些查找脚本提供了注入搜索提示的方法,而不必污染全局变量(尽管FindCxxTest似乎没有提供此功能)。

另一种选择是,如果您仍然在源树中的固定位置包含CxxTest源,则根本不使用查找脚本,而是硬编码路径。

一开始这可能感觉像是一个肮脏的解决方案,但如果你真的可以依赖源总是在那里,它实际上是解决这个问题最干净,最有力的方法。只有当说明文件所在系统的确切位置时,查找脚本才有意义。