首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >强制CMake将目标安装到特定于体系结构的目录中?

强制CMake将目标安装到特定于体系结构的目录中?
EN

Stack Overflow用户
提问于 2019-06-25 21:34:53
回答 1查看 419关注 0票数 0

我目前对Google Protobuf图书馆有这个问题,但这是一个反复出现的问题,可能会发生在许多,如果不是所有第三方软件包,我想要建立和安装的源代码。

我正在为Windows开发,我们需要能够同时生成32位和64位版本的DLL。让CMake将我们自己的模块安装到特定于体系结构的子目录中相对简单,例如D:\libraries\bin\i686d:\libraries\lib\i686 (和sim )。( bin)。但是我在像Protobuf这样的第三方图书馆实现同样的目标时遇到了困难。

当然,我可以使用不同的CMAKE_INSTALL_PREFIXCMAKE_PREFIX_PATH组合(例如D:\libraries-i686D:\libraries-x86_64 ),并且可能会最终做到这一点,但让我感到困扰的是,似乎没有更好的选择。文档 for find_package()清楚地表明,搜索过程确实尝试了特定于体系结构的搜索路径,那么为什么流行库的CMake文件通常似乎不支持安装到特定于体系结构的子目录呢?

或者这仅仅是一个设置正确的CMAKE_XXX变量的问题?

EN

回答 1

Stack Overflow用户

发布于 2019-06-26 10:23:37

多亏@arrowd为我指明了正确的方向,我现在得到了我的答案,尽管这不是我所希望的。

但是,CMAKE_LIBRARY_OUTPUT_DIRECTORYCMAKE_RUNTIME_OUTPUT_DIRECTORY指定构建输出目录,而不是安装目录。然而事实证明,安装目录也有一些变量,称为CMAKE_INSTALL_BINDIRCMAKE_INSTALL_LIBDIR --当选中"Advanced“时,它们在cmake接口中实际上是明显可见的(以及更多的)。

我尝试手动设置这两个文件( bin\i686lib\i686),它起了作用: Protobuf INSTALL目标复制我想要它们的文件,也就是我的使用者项目的CMake脚本将以架构安全的方式找到它们的地方。

我不知道我对此有何看法--我更喜欢类似于CMAKE_INSTALL_ARCHITECTURECMAKE_ARCHITECTURE_SUBDIR变量的东西,CMake会自动将这些变量附加到相关的安装路径中。上面的解决方案需要重写的缺省值,而我更愿意保持不变。

在这种情况下,我的退路可能仍然是更好的选择。然而,这种方法需要很早就做出架构选择,通常是在运行脚本初始化特定于CMake的环境变量时,在配置构建目录时传递给cmake。更糟糕的是,使用cmake-gui时,需要用户手动设置所有目录。

最后,我还没决定。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56762316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档