【发布时间】:2014-02-20 09:03:48
【问题描述】:
我需要找到如何最好地使用 CMake 来构建同一个库的多个不同版本。
假设我有软件 A、B 和 C。所有这些都使用相同的外部库,我们称之为 D。假设 D 与 A、B 和 C 相比是巨大的。所以只需使用 svn:external多次结帐是一个糟糕的选择。
我想到的是有一个文件夹,其中包含 A、B、C 和 D 的子文件夹,并且只需调用 add_subdir(../D)。但是为了让事情变得复杂,我不想在其他开发人员身上强制执行这种文件夹结构,所以我最终想到了用 find_package 来做这个工作,不知何故。
我希望看到的是,您能够从 subversion 获取 C 和 D 到任何文件夹,并让 C 为自己编译它自己的 D 版本并使用它,而无需自定义文件夹。
这似乎是一个愚蠢的梦想,但不是地球上最聪明的人,也许有人知道如何实现这一目标。
编辑: 请注意,A B & C 不能为 D 使用相同的二进制文件,因为它们会使用不同的编译器标志来构建库。
【问题讨论】:
-
由于您不能使用二进制文件,
find_package不是解决方案,因为它的作用是帮助定位要链接的二进制库。 -
另外,A、B 和 C 是单个 CMake 项目的一部分,还是彼此独立?
-
它们是完全独立的。
-
SirDarius,当您编写自己的东西让 find_package 运行时,一切皆有可能。
-
是的,有可能是的,也有只有标题的库。在这种情况下,我相信指向 D 的源代码根目录的简单 cmake 用户可见变量会起作用。
标签: cmake