我正在尝试创建一个开源C ++项目。我希望它尽可能容易构建,但同时跨平台。 我不需要像boost或Qt这样的gui或重型库,所以我决定使用GitHub,CMake和LibSourcey。 我的问题是,我无法找到一种方法来使我的项目易于在Windows中构建,这是我的开发环境。 如何在Windows中“安装”一个库以便在我的项目中使用?我甚至必须在Windows中安装它吗? 是否可以自动下载,构建和链接它?
在Windows上,除了安装程序之外,我还想制作一个可移植版本,因此不需要任何硬编码库路径。
我认为,在某些平台上,如Linux,库是可分离构建的,并由维护者打包。所以我不应该把我自己的副本捆绑起来。
所以,我的问题是: 如何设置跨平台且易于构建的项目,以及最佳实践是什么?
答案 0 :(得分:1)
例如,您可以使用路径在git仓库中创建git submodule
contrib/LibSourcery
和LibSourcery
的github repo的LibSourcery
和url,因为cmake
使用了CMakeLists.txt
需要在add_subdirectory(contrib/LibSourcery)
:git clone --recursive url
那么想要使用您的代码的人,只需cmake -G
获取所有代码和依赖项,然后运行IDE
,为他选择的IDE
创建项目(当然包括MSVC ++),
在Parse.serverURL="back4app api URL"
中打开项目并按下构建按钮,这就是全部。
答案 1 :(得分:1)
答案 2 :(得分:0)
没有优雅的跨平台方式,因为" make install"在Windows上不存在,因此在那里使用cmake install是不确定的。对于那些应该帮助跨平台的东西,我觉得这是一个缺陷。
我的解决方案是编写一个自定义的_INSTALL,它接受与cmake install相同的args,然后在Linux上它只调用install,在Windows上它执行一个add_command,它将构建后的副本复制到安装路径,从而完成一样。基本上,_INSTALL的行为与您期望跨平台安装命令的行为方式相同。如果有兴趣,可以分享我的_INSTALL功能。
_INSTALL被放置在一个Helper.cmake中,并包含在我的项目的所有CMakeList.txt中,所以我需要做的就是调用它,生成的lib / inc文件可以为win和linux神奇地出现。