我使用一些我不想构建的库,作为使用它们的每个项目的一部分。一个非常容易理解的例子是LLVM,它有78个静态库。即使有cmake代码在每个cmake文件中查找和导入这些代码都是过度的。对于cmake“include”命令,文件和模块有什么区别?
显而易见的解决方案似乎是使用“include”命令,并将相关的cmake脚本块分解为* .cmake文件,并设置CMAKE_MODULE_PATH环境变量。
除了它只是普通不起作用。 Cmake没有找到我在include命令中指定的文件。
就机会而言,我甚至试图用几种方式指定环境变量中的路径 - 一次是反斜线,一次是正斜杠......并且我每次都重新启动命令提示符并检查环境变量是目前和正确。
在cmake手册中,它意味着“文件”与“模块”不同 - 只有一个模块获得自动添加扩展和搜索路径处理。但是没有解释有什么不同。我猜想,缺少的扩展可能已经足够了(与标准模块一样),但显然不是。
在该手册中搜索“模块”没有太大的帮助,因为这个词似乎被重载。例如,一个模块也是一个使用LoadLibrary/dl_open加载的动态库。
任何人都可以解释在这种情况下文件和模块之间有什么区别,以及如何创建我自己的模块,以便cmake include命令可以找到并使用它?
我在Windows上使用cmake 2.8.1。
编辑
我很有信心,这里的问题是不理解的cmake是如何工作的。我认为应该正在做的是写find_package
可以使用的东西。
虽然事实证明,我仍然有些不能回答我自己的问题。
现在回头看看这段代码,我注意到我没有追加到'CMAKE_MODULE_PATH';我完全打破了它。你可能想要做更多的事情:'set(CMAKE_MODULE_PATH“$ {CMAKE_MODULE_PATH}; $ {CMAKE_CURRENT_SOURCE_DIR}/cmake”)' – 2010-07-16 01:16:45
我现在没有时间检查,但这看起来不错。谢谢。 – Steve314 2010-07-16 08:09:32
我不知道为什么我现在认为变量是一个环境变量。我想,看看我在找什么,而不是在那里。我最近刚刚在YouTube上观看了Google的techtalk视频,并指出环境变量大多是故意避免的。无论如何 - 接受和感谢。 – Steve314 2010-07-17 03:11:03