【发布时间】: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 不应该比较版本。
标签: cmake