首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMake找不到CxxTest包

CMake找不到CxxTest包
EN

Stack Overflow用户
提问于 2015-05-06 05:23:25
回答 1查看 1.9K关注 0票数 3

我编写了以下CMakeLists.txt,以便使用CxxTest构建一个测试器(这几乎是FindCxxTest提供的标准示例):

代码语言:javascript
复制
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 ,尽管在存在CMakeLists.txt的目录中有cxxtest文件夹和cxxtest/TestSuite.h文件。

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

我需要设置另一条搜索路径吗?我在Windows上测试。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-06 12:00:52

find_path不搜索当前列表目录。也就是说,仅仅因为一个相对路径可以从当前的CMakeLists.txt到达,并不意味着它将被找到。您可以在手册中找到搜索顺序的完整描述。

一个快速和肮脏的解决方案是将相应的目录添加到您的CMAKE_PREFIX_PATH

代码语言:javascript
复制
 set(CMAKE_PREFIX_PATH ${CMAKE_CURRENT_LIST_DIR})
 find_package(CxxTest)

通过CMAKE_SYSTEM_PREFIX_PATHCMAKE_INCLUDE_PATHCMAKE_LIBRARY_PATHCMAKE_PROGRAM_PATH变量可以获得更细粒度的控制。另外,一些查找脚本提供了在不污染全局变量的情况下注入搜索提示的方法(尽管FindCxxTest似乎没有提供这种方法)。

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

乍一看,这可能是一种肮脏的解决方案,但如果您真的可以依赖始终存在的源,那么它实际上是解决这个问题的最干净和最健壮的方法。只有当您不能说出文件在系统上的确切位置时,才能真正找到脚本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30068164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档