之后项目可能需要在 Python 下面用 c++写一些库,请问各位 c++大佬,你们都是怎样去管理要用到的第三方代码?(因为之前写的语言都有包管理器这个东西,不太了解)
1
goreliu 2018-04-25 18:37:10 +08:00
如果是用 linux 的话,可以用系统的包管理器来管理依赖,这样是最省事的(比如不用加 -I -L 之类的参数编译)。Windows 的话可能复杂些,如果是 Mingw 系列,可以用 MSYS2,如果是 VS 系列,有多种方法,具体得看用的是什么库。
|
2
changnet 2018-04-25 18:37:22 +08:00 via Android
git submodule
|
3
gnaggnoyil 2018-04-25 19:36:30 +08:00
尽量让目标用户能通过所支持的环境中系统默认的包管理器就能安装上满足要求的依赖.(Windows 下 Visual Studio 有 vcpkg,MinGW 有 MSYS2 的 pacman),如果不能也尽量写清楚要安装满足要求的依赖需要哪些步骤.
另外如果你的库要跨多个平台的话那么你大概率要处理不同平台之间不同的的依赖配置问题.为了解决这个问题那么你大概率需要 CMake.另外如果 LZ 要写 CPython 扩展的话也要大概了解下 CPython 扩展的文件是如何被组织的.当然,这种组织方式也可以用 CMake 来完成,无论是单独 CMake 还是 CMake+distutils/setuptools. |
4
congeec 2018-04-25 22:25:32 +08:00 via iPhone
其实方案挺多的
了解下 Conan |
5
wevsty 2018-04-25 22:27:25 +08:00
Linux 就用系统的包管理就行了。
Win 那只有自己去整理了。 |
6
lbtinglb 2018-04-26 02:08:22 +08:00
c++ under Windows 可以看看微软最近新出的 vcpkg。https://github.com/Microsoft/vcpkg
|
7
MeteorCat 2018-04-26 13:12:12 +08:00
cmake
find_package(XXX require) 判断没有执行外部 sh 脚本安装部署 |
8
joyee 2018-04-27 03:01:41 +08:00
看第三方库的类型,如果是依赖 API/ABI 稳定性有保障安装包也很广泛分布的项目的话,很多都是让用户自行安装依赖,然后用 cmake 之类的工具在系统里找依赖生成 Makefile 动态链接上去的。平台型项目希望自己控制依赖版本的话就直接把依赖的代码放进一个文件夹了,一般自己有脚本用来更新依赖,然后静态链接,但我见过被 Linux 发行版自带包管理器改写成动态链接自己的包给他们的用户的……
|