需求是要弄一个用 pip 发布的python 包,使用 boost-python 桥接 原C++代码,发布时不想带 boost-python 的运行时库,因此需要弄静态的 boost-python库,在 Windows平台下使用vcpkg 的自定义 triplet实现。

在 vcpkg\triplets 根目录下新建 x64-windows-dynamic.cmake

set(VCPKG_TARGET_ARCHITECTURE x64)
set(VCPKG_CRT_LINKAGE dynamic)
set(VCPKG_LIBRARY_LINKAGE static)
if(PORT MATCHES "python3")
set(VCPKG_LIBRARY_LINKAGE dynamic)
endif()

上面的设置使得对python3 这个port完全动态编译,这个库是 boost-python 的依赖库;对于 boost库,运行时库是动态的(/MD),但库本身是静态的,由于vcpkg采用统一的命名规范,与 boost windows平台下库的名称不太一样。

之后使用vcpkg install boost-python:x64-windows-dynamic,同样方法安装其他库即可(均为链接动态的CRT和静态的库本身)

初始化cmake 项目时使用

cmake "-GVisual Studio 15 2017 Win64" -DCMAKE_TOOLCHAIN_FILE=%VCPKG_ROOT%scripts\buildsystems\vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-dynamic ..

其中VCPKG_ROOT是环境变量,指向本机vcpkg的安装目录。

使用custom 的 setup.py 进行打包

python setup.py bdist_wheel

输入用户名和密码上传到pypi.org

python -m twine uplodat dist\package.whl

package.whl换成你实际的包名。

然后在有相同python版本的windows电脑上(比如都是python3.6)可以用 pip install package 进行测试。

最新文章

  1. Trie tree实践
  2. C#调用webservice简单实例
  3. Sql Server 中一个非常强大的日期格式化函数
  4. yii2整合百度编辑器umeditor
  5. Intellij 常用快捷键
  6. SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
  7. 图结构练习——最小生成树(kruskal算法(克鲁斯卡尔))
  8. Linux shell判断文件和文件夹是否存在
  9. asp.net页面间传值的几种方法
  10. Java 中的构造方法
  11. Newtonsoft.Json高级用法 1.忽略某些属性 2.默认值的处理 3.空值的处理 4.支持非公共成员 5.日期处理 6.自定义序列化的字段名称
  12. Codeforces 445 A DZY Loves Chessboard【DFS】
  13. 2014年Tizen开发者峰会上海征稿启事!
  14. Gartner公布了集成系统的魔力象限 - Nutanix的关键技术是什么?
  15. Devstack: A copy of worked local.conf I'm sharing with you.
  16. 设计模式NO.3
  17. Android的GridView的用法-android学习之旅(二十七)
  18. Struts2新漏洞S2-046在线实验环境全球首发
  19. 邮件发送-》http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256
  20. HGOI20181030 模拟题解

热门文章

  1. java 通过jmx获取active mq队列消息
  2. Qt之菜单栏工具栏入门
  3. MSVC中C++ UTF8中文编码处理探究
  4. gradle项目
  5. 稀疏矩阵 part 2
  6. Anatomy of a Database System学习笔记 - 事务:并发控制与恢复
  7. 断断续续Python看到现在
  8. 关于vue
  9. python各种web框架对比
  10. tensorflow 如何读取npy文件里的参数