【发布时间】:2011-03-16 00:50:49
【问题描述】:
我使用了一些我不想在每个使用它们的项目中构建的库。一个非常容易理解的例子是 LLVM,它有 78 个静态库。即使在每个 cmakefile 中都有 cmake 代码来查找和导入这些代码也是多余的。
显而易见的解决方案似乎是使用“include”命令,并将相关的 cmake 脚本块分解到 *.cmake 文件中,并设置一个 CMAKE_MODULE_PATH 环境变量。
除非它只是简单地不起作用。 Cmake 没有找到我在 include 命令中指定的文件。
在偶然的情况下,我什至尝试用几种方法在环境变量中指定路径 - 一次使用反斜杠,一次使用正斜杠... - 我每次都重新启动命令提示符并检查环境变量是否存在并正确。
在 cmake 手册中,它有点暗示“文件”与“模块”不同——只有模块获得自动添加扩展和搜索路径处理。但是没有解释有什么区别。我猜想缺少的扩展可能就足够了(与标准模块一样),但显然不是。
在手册中搜索“模块”并没有太大帮助,因为这个词似乎已经超载。例如,模块也是使用 LoadLibrary/dl_open 加载的动态库。
谁能解释一下在这种情况下文件和模块之间有什么区别,以及我如何创建自己的模块以便 cmake include 命令可以找到并使用它?
我在 Windows 上使用 cmake 2.8.1。
编辑
我非常有信心,这里的问题是不了解 cmake 应该如何工作。我认为我应该做的是写一些find_package 可以使用的东西。
尽管如此,我离回答自己的问题还有一段距离。
【问题讨论】:
标签: cmake