我正在尝试创建一个开源C++项目。我希望它尽可能容易构建,但同时跨平台。我不需要gui或者像boost或Qt这样的大型库,所以我决定使用GitHub、CMake和LibSourcey。我的问题是,我找不到一种方法使我的项目易于在windows中构建,这就是我的开发环境。如何在Windows中“使安装”库在我的项目中使用?我要把它安装在窗户上吗?是否可以自动下载、构建和链接?
在windows上,除了安装程序之外,我还想制作一个可移植的版本,所以不需要任何硬编码的库路径。
我想,在一些平台上,比如Linux,库是独立构建的,由维护人员打包。所以我不应该只打包我自己的副本。
因此,我的问题是:如何建立一个跨平台、易于构建的项目,以及最佳实践是什么?
发布于 2016-05-11 22:54:15
您可以在github中使用路径创建git submodule,例如contrib/LibSourcery和url到LibSourcery的github,因为LibSourcery使用cmake,所以只需要在CMakeLists.txt:add_subdirectory(contrib/LibSourcery)中添加这样的行即可。
因此,想要使用您的代码的人,只需执行git clone --recursive url来获取所有的代码和依赖项,然后运行cmake -G,为他选择的IDE (当然包括MSVC++ )创建项目,在IDE中打开项目,然后按build按钮,仅此而已。
发布于 2016-05-23 11:18:11
使用巴布。它是一个用于cygwin的包装器,它非常适合我需要的所有东西,甚至可以用cmake编译。
或者,您也可以使用预制件,它使用lua作为配置系统,并在windows上工作良好。
发布于 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中。
https://stackoverflow.com/questions/37171361
复制相似问题