首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMake "make“或在windows中包含一个库

CMake "make“或在windows中包含一个库
EN

Stack Overflow用户
提问于 2016-05-11 19:08:18
回答 4查看 2.7K关注 0票数 12

我正在尝试创建一个开源C++项目。我希望它尽可能容易构建,但同时跨平台。我不需要gui或者像boost或Qt这样的大型库,所以我决定使用GitHub、CMake和LibSourcey。我的问题是,我找不到一种方法使我的项目易于在windows中构建,这就是我的开发环境。如何在Windows中“使安装”库在我的项目中使用?我要把它安装在窗户上吗?是否可以自动下载、构建和链接?

在windows上,除了安装程序之外,我还想制作一个可移植的版本,所以不需要任何硬编码的库路径。

我想,在一些平台上,比如Linux,库是独立构建的,由维护人员打包。所以我不应该只打包我自己的副本。

因此,我的问题是:如何建立一个跨平台、易于构建的项目,以及最佳实践是什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-05-11 22:54:15

您可以在github中使用路径创建git submodule,例如contrib/LibSourcery和url到LibSourcery的github,因为LibSourcery使用cmake,所以只需要在CMakeLists.txtadd_subdirectory(contrib/LibSourcery)中添加这样的行即可。

因此,想要使用您的代码的人,只需执行git clone --recursive url来获取所有的代码和依赖项,然后运行cmake -G,为他选择的IDE (当然包括MSVC++ )创建项目,在IDE中打开项目,然后按build按钮,仅此而已。

票数 2
EN

Stack Overflow用户

发布于 2016-05-23 11:18:11

使用巴布。它是一个用于cygwin的包装器,它非常适合我需要的所有东西,甚至可以用cmake编译。

或者,您也可以使用预制件,它使用lua作为配置系统,并在windows上工作良好。

票数 1
EN

Stack Overflow用户

发布于 2016-10-19 18:31:56

没有优雅的跨平台方式,因为Windows上不存在"make“的概念,因此没有定义cmake的使用。对于一些应该有助于跨平台的东西,我觉得这是一个缺陷。

我的解决方案是编写一个自定义的_INSTALL,它使用与cmake相同的args,然后在Linux上它只调用install,在Linux上它执行一个add_command,它对安装路径执行编译后复制,完成相同的任务。基本上,_INSTALL的行为方式与您期望的跨平台安装命令的行为方式相同。如果有兴趣,可以分享我的_INSTALL功能。

_INSTALL被放置到Helper.cmake中,并包含在我的项目的所有CMakeList.txt中,所以我所需要做的就是调用它,生成的lib/inc文件将奇迹般地出现在win和linux中。

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

https://stackoverflow.com/questions/37171361

复制
相关文章

相似问题

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