当前位置: 首页 > news >正文

谷歌or-tools开源库入门

1.命令行编译程序

这里要说明下,直接用qt或者VS2022打开cmake工程,编译没有成功。所以,老老实实的按照官方教程来,使用命令行编译。

(1)准备

1)安装cmake,版本3.18以上,尽量选择最新版本。

2)安装VS2022,在window上就只能选择VS2022 编译器,其他编译器官方不保证能够编译成功。

3)要从命令行构建 OR 工具程序,您必须使用 x64 原生工具命令提示符(不是开发者命令提示符)。我因为没有注意,用命令行构建一直没有成功。

x64原生工具命令提示符(x64 Native Tools Command Prompt for VS 2022)在VS2022的菜单目录下。

(2)下载源码

1)从官方github拉去源码

git clone -b main https://github.com/google/or-tools

2)先抓取所有分支的源码,然后提取tag“v9.12”的源码,并创建分支“9.12”

git fetch --all --tags --prune git checkout tags/v9.12 -b v9.12

尽量通过tag的版本号来下载源码,最新的代码没有经过严格测试,下载编译后,可能会出现各种问题。

(3)启动x64原生工具命令提示符来执行命令,要用管理员身份来启动,否则会报MSB307错误,这个一般是没有管理员权限导致的。(这部很重要)

(4)配置构建

cmake -S . -B build -DBUILD_DEPS=ON

(5)构建源码

cmake --build build --config Release --target ALL_BUILD -j -v

(6)在操作系统上安装 OR-工具

cmake --build build --config Release --target INSTALL -v

安装路径可在CMakeCache.txt查看

//Install path prefix, prepended onto install directories. CMAKE_INSTALL_PREFIX:PATH=C:/Program Files (x86)/ortools

安装日志文件install_manifest.txt

2.代码改动

(1)utf8和utf8-bom的问题

原因:Linux的文本协议默认是utf8,而Windows的文本协议是utf8-bom。有些特殊文本符号在utf8-bom下无法识别,所以把msvc编译器的协议也改成utf8。

if(MSVC) set(CMAKE_CXX_STANDARD 20)

# 设置源代码和执行字符集为 UTF-8(MSVC 2015 及以上支持 /utf-8)

message(STATE "set utf-8=======") add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>") add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>") else() set(CMAKE_CXX_STANDARD 17)

endif()

3.总结

QT和VS2022都已经支持了cmake,但是我试了好几次没有成功,应该是需要额外的配置。老老实实按照官方教程来吧。官网只提供了命令行操作。

参考:

[1]官网 https://developers.google.com/optimization/install/cpp/source_windows?hl=zh-cn

相关文章:

  • 【大模型实战篇】多模态推理模型Skywork-R1V
  • CSS三大特性、显示模式、背景与书写顺序
  • XSS 绕过分析:一次循环与两次循环的区别
  • 【Java集合夜话】第2篇:Collection家族,一场优雅的探索之约
  • 第四节:sqlx库使用指南
  • 876.链表的中间节点
  • Mysql中事务的隔离级别以及实现原理
  • [node] 4 http模块
  • skywalking微服务链路追踪
  • 小白电路设计-设计2-可调式单电源直流稳压电路设计
  • Python实战(2)-数据库支持
  • numpy学习笔记14:模拟随机游走过程
  • hadoop-HDFS操作
  • 【链表】一文搞定链表算法:从基础到实战
  • 人工智能:如何把excel中某数据区域中,含有空格数据的单元格标记背景颜色出来?
  • S32K144外设实验(二):ADC单通道单次采样(软件触发)
  • 《Linux:动态库动态链接与静态库静态链接》
  • 声动未来,门店数字化助力韶音加速破圈
  • 4. 移动到末尾(蓝桥云课)
  • stm32第七天震动传感器
  • 旅游网站建设目标/网络营销的三大基础
  • 电商网站开发技术方向/app定制开发
  • 影视手机app制作教程/北京seo排名优化网站
  • 发明迷网站豆渣做豆腐/公众号代运营
  • 用mvc做网站的框架/网络推广外包要多少钱
  • 哈尔滨网站建设推荐/seo公司上海