cmake找不到pdal的配置文件

Posted

技术标签:

【中文标题】cmake找不到pdal的配置文件【英文标题】:cmake not finding a configuration file for pdal 【发布时间】:2017-11-14 14:19:16 【问题描述】:

我正在尝试使用 CMake 在 Windows 中配置 Point Data Abstraction Library。我正在关注可以在here 找到的教程:

我在命令提示符中使用以下命令:

C:\Users\name\PDALe\build> cmake .. -DCMAKE_PREFIX_PATH=C:\OSGeo4W64\lib\pdal\cmake 

但是,会出现以下警告:

CMakeLists.txt:3 (find_package) 处的 CMake 警告: 找不到兼容的包“PDAL”的配置文件 使用请求的版本“1.6.0”。 以下配置文件被考虑但未被接受: C:/OSGeo4W64/lib/pdal/cmake/PDALConfig.cmake,版本:1.6.0(64位)

这正是我希望它使用的配置文件,我不确定它为什么不使用它。我见过类似的idea,但我认为我已将 cmake 正确定向到配置文件。

我缺少一些简单的东西吗?有谁知道这里出了什么问题?

编辑:我目前的CMakeLists.txt如下:

cmake_minimum_required(VERSION 2.8)
project(MY_PDAL_PROJECT)
find_package(PDAL REQUIRED CONFIG)
include_directories($PDAL_INCLUDE_DIRS)
link_directories($PDAL_LIBRARY_DIRS)
add_definitions($PDAL_DEFINITIONS)
set(CMAKE_CXX_FLAGS "-std=c++11")
add_executable(tutorial Tutorial.cpp)
target_link_libraries(tutorial PRIVATE $PDAL_LIBRARIES)

自从我提出这个问题后,我才将find_package(PDAL REQUIRED CONFIG)find_package(PDAL 1.6.0 REQUIRED CONFIG) 更改为行。

【问题讨论】:

现有配置似乎有版本1.6.0 (64bit)。您可能需要在find_package() 调用中准确指定该版本:find_package(PDAL "1.6.0 (64bit)" REQUIRED CONFIG) 谢谢,我已经试过了。问题是它似乎不喜欢这样作为一个论点:CMake Error at CMakeLists.txt:3 (find_package): find_package called with invalid argument "1.6.0 (64bit)"。我也试过find_package(PDAL 1.6.0 (64bit) REQUIRED CONFIG) 得到:CMake Error at CMakeLists.txt:3 (find_package): find_package called with invalid argument "(" 嗯,实际上我第一次看到带有() 的版本字符串,不确定CMake 是否正确处理它。但是,如果您只有一个 PDAL 包,您可以在 find_package() 调用中省略版本参数。 不幸的是,这似乎也没有做到:CMake Warning at CMakeLists.txt:3 (find_package): Could not find a configuration file for package "PDAL" that is compatible with requested version "". The following configuration files were considered but not accepted: C:/OSGeo4W64/lib/pdal/cmake/PDALConfig.cmake, version: 1.6.0 (64bit) 嗯,“省略版本参数”是指find_package(PDAL REQUIRED CONFIG)。在这种情况下,CMake 不应该比较版本。 【参考方案1】:

基本上,CMake 告诉您它找到了 PDAL 库的 64 位版本,但这与 CMake 推断出的编译器正在使用的位数不匹配。

因此,Cmake 将 '(64bit)' 添加到版本字符串中。

尝试仔细检查您的环境是否确实设置为 64 位编译器。您应该能够从构建目录中某处的 CMakeError.txt 或 CMakeOutput.txt 文件中验证这一点。

编译器的路径会给你一个线索,或者编译器本身的第一行输出。例如我说:

Microsoft (R) C/C++ 优化编译器版本 19.14.26433 for x64

【讨论】:

以上是关于cmake找不到pdal的配置文件的主要内容,如果未能解决你的问题,请参考以下文章

CMake - 找不到“QT”提供的包配置文件

CMake 问题 - 找不到“OpenCV”提供的包配置文件

CMake 找不到 SDL2

CMake 错误:包含找不到加载文件:目标

CMake 找不到 GLEW

CMake 找不到源文件,即使它位于正确的位置 [关闭]