11

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

在 Windows 上,除了安装程序,我还想制作一个便携版本,所以不想要任何硬编码的库路径。

我假设,在某些平台上,比如 Linux,库是由维护者单独构建和打包的。所以我不应该只是捆绑我自己的副本。

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

4

3 回答 3

1

您可以git submodule在您的 git repo 中使用例如路径 和contrib/LibSourcerygithub repo 的 url创建LibSourcery,因为您只需将这样的行添加到您的:LibSourcerycmakeCMakeLists.txtadd_subdirectory(contrib/LibSourcery)

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

于 2016-05-11T22:54:15.933 回答
1

使用巴本。它是 cygwin 的包装器,它非常适合我需要的一切,甚至可以使用 cmake 编译。

或者,您可以使用premake,它使用 lua 作为配置系统并在 Windows 上运行良好。

于 2016-05-23T11:18:11.117 回答
0

没有优雅的跨平台方式,因为“make install”的想法在 Windows 上不存在,因此 cmake install 的使用在那里没有定义。对于应该有助于跨平台的东西,我觉得这是 cmake 的不足。

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

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

于 2016-10-19T18:31:56.393 回答