CMake“make install”或在Windows中包含库

时间:2016-05-11 19:08:18

标签: c++ windows github cmake cmake-gui

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

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

我认为,在某些平台上,如Linux,库是可分离构建的,并由维护者打包。所以我不应该把我自己的副本捆绑起来。

所以,我的问题是: 如何设置跨平台且易于构建的项目,以及最佳实践是什么?

3 个答案:

答案 0 :(得分:1)

例如,您可以使用路径在git仓库中创建git submodule contrib/LibSourceryLibSourcery的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)

使用babun。它是cygwin的包装器,它可以完美地满足我需要的一切,甚至可以用cmake进行编译。

或者,您可以使用premake,它使用lua作为配置系统,并在Windows上正常工作。

答案 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神奇地出现。