CMake找不到CxxTest包

CMake找不到CxxTest包,cmake,cxxtest,Cmake,Cxxtest,我编写了以下CMakeLists.txt,以便使用cxtest构建一个测试仪(这几乎是FindCxxTest提供的标准示例): 问题是,尽管我在存在CMakeLists.txt的目录中有文件夹CxxTest和文件CxxTest/TestSuite.h,但找不到CxxTest 我已经查看了FindCxxTest.cmake的源代码,看看它能走多远,但它甚至没有找到路径cxtest\u INCLUDE\u DIR 我必须设置另一个搜索路径还是什么?我正在Windows上测试。find\u path不

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

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

我已经查看了
FindCxxTest.cmake
的源代码,看看它能走多远,但它甚至没有找到路径
cxtest\u INCLUDE\u DIR


我必须设置另一个搜索路径还是什么?我正在Windows上测试。

find\u path
不搜索当前列表目录。也就是说,仅仅因为可以从当前的CMakeLists.txt访问相对路径,并不意味着可以找到它。您可以在中找到搜索顺序的完整说明

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

通过
CMAKE\u系统前缀路径
CMAKE\u包含路径
CMAKE\u库路径
CMAKE\u程序路径
变量,可以实现更细粒度的控制。此外,一些find脚本提供了注入搜索提示的方法,而不必污染全局变量(尽管
FindCxxTest
似乎不提供这种方法)

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


一开始,这可能感觉像是一个肮脏的解决方案,但如果你真的可以依赖始终存在的资源,那么它实际上是解决这个问题的最干净、最可靠的方法。“查找脚本”只有在您无法说出文件在系统上的确切位置时才有意义。

我尝试了您快速而肮脏的解决方案,但它不起作用。在我的问题示例中,我还设置了变量
CMAKE\u INCLUDE\u PATH
,但这也没有帮助。@cwde仔细检查您的路径。find脚本使用
find_path(CXXTEST\u INCLUDE_DIR CXXTEST/TestSuite.h)
,如果找到
${CMAKE_PREFIX_path}/CXXTEST/TestSuite.h
,这将起作用。请注意,这将只设置
cxtest\u INCLUDE\u DIR
变量,而不设置其他变量。特别是,
cxtest\u FOUND
之后可能仍然为false。对丢失的组件应用类似的修复,直到完整的find脚本通过。
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()
 set(CMAKE_PREFIX_PATH ${CMAKE_CURRENT_LIST_DIR})
 find_package(CxxTest)