【发布时间】:2014-11-16 23:44:47
【问题描述】:
CMake 似乎不支持定义导出或安装目标的命名空间与相应库文件的名称之间的关系。
因此,例如,CMake 可以轻松创建包含明确命名目标的包,例如 MyOrg::MyLibrary(使用 export(EXPORT ...) 和 install(EXPORT ...) 命令的 NAMESPACE 选项,但实际的 .a, . lib、.so 或 .dll 文件仍将获得全局间隔名称,例如 libMyLibrary.a:命名空间不会进入库文件名。
当然可以自己将命名空间应用于您的目标;在上面的示例中,您可以将目标命名为 MyOrgMyLibrary,从而得到一个库文件名,例如“libMyOrgMyLibrary.a”。我猜这没关系,除了这使得NAMESPACE 选项基本上无用(或者你最终会得到名为MyOrg::MyOrgMyLibrary 的目标),让我觉得我错过了一些东西。
有没有办法覆盖生成的库的名称?或者使用 CMake 确保库文件获得明确名称的“正确”方法是什么?
【问题讨论】:
标签: namespaces cmake packages libraries