【发布时间】:2015-11-08 08:10:33
【问题描述】:
我正在使用 CMake 构建一个跨平台库,该库具有一些(非常常见的)依赖项(例如 PCRE)。这些依赖项可通过通常的包管理器(Ubuntu/Debian 上的 APT,OSX 上的 Homebrew)以及 Windows 上的 NuGet 获得。在我的CMakeLists.txt 中,我使用find_package 的“模块”版本来定位这些依赖项并设置正确的包含/库标志。
This question 提供了一种集成 CMake + NuGet 的方法,但也暗示 CMake 和 NuGet 不太可能一起玩得很好,我似乎找不到方法让find_package 找到已安装的依赖项。有什么方法可以让 CMake 读取 NuGet 配置文件(就像 pkg_check_modules 在具有 pkg-config 的系统上工作的方式一样)并从那里填充适当的 CMake 变量?还是我必须在FindPCRE.cmake 中手动推出自己的解决方案?
【问题讨论】:
-
您是否尝试将 NuGet 安装路径添加到 CMAKE_PREFIX_PATH?
-
我不确定 CMAKE_PREFIX_PATH 是否足够,因为看起来目录层次结构有点……疯狂。
-
是的,毛茸茸的。我尝试了它,但找不到魔法咒语。
-
问题是没有统一的约定如何用NuGet打包原生库。因此,每个包都有一个独特的布局,您必须手动考虑这一点。我有一个脚本,它根据各个包设置 CMAKE_LIBRARY_PATH 和 CMAKE_PREFIX_PATH... :-( 我正在研究具有统一布局约定的 vcpkg。