MacOS环境下使用CPLEX solver的最佳方法及适配IDE咨询
macOS环境下兼容CPLEX Concert Technology的C++ IDE及配置方案
不推荐继续尝试Visual Studio for Mac配置:微软已于2024年正式停止该产品的更新支持,内置C++工具链存在大量兼容问题,排查成本极高。
方案1:Visual Studio Code(配置成本最低,适配绝大多数个人开发场景)
- 前置校验:确认已正常安装macOS版CPLEX,默认安装路径为
/Applications/CPLEX_Studio<你的版本号>/,提前确认3类路径:- 头文件路径:
<安装根目录>/concert/include、<安装根目录>/cplex/include - 静态库路径:Intel芯片Mac为
<安装根目录>/concert/lib/x86-64_osx/static_pic、<安装根目录>/cplex/lib/x86-64_osx/static_pic;M系列芯片Mac将路径中x86-64_osx替换为arm64_osx - 需链接的静态库:
libilocplex.a、libconcert.a、libcplex.a
- 头文件路径:
- 安装VS Code后,安装两个必装扩展:C/C++ Extension Pack、CodeLLDB
- 新建项目文件夹并用VS Code打开,按
Command+Shift+P调出命令面板,选择C/C++: Edit Configurations (UI),在「Include path」项中添加前述两个头文件路径,编译器选择系统自带clang(安装Xcode命令行工具后路径为/usr/bin/clang++) - 在项目根目录新建
.vscode/tasks.json文件,写入编译配置,示例如下(注意替换成你自己的CPLEX版本号和芯片对应路径):
{ "version": "2.0.0", "tasks": [ { "type": "cppbuild", "label": "C/C++: clang++ 生成活动文件", "command": "/usr/bin/clang++", "args": [ "-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}", "-I/Applications/CPLEX_Studio2211/concert/include", "-I/Applications/CPLEX_Studio2211/cplex/include", "-DIL_STD", "-L/Applications/CPLEX_Studio2211/concert/lib/arm64_osx/static_pic", "-L/Applications/CPLEX_Studio2211/cplex/lib/arm64_osx/static_pic", "-lilocplex", "-lconcert", "-lcplex", "-lm", "-lpthread" ], "group": "build", "problemMatcher": ["$gcc"] } ] }
- 配置完成后按
Command+Shift+B即可完成编译,配合CodeLLDB扩展可直接打断点调试,无需适配Xcode的新版配置逻辑。
方案2:CLion(适合大型模型项目开发)
- 安装CLion后新建C++可执行项目,直接编辑根目录下的
CMakeLists.txt文件,添加CPLEX相关配置即可,示例如下:
cmake_minimum_required(VERSION 3.26) project(cplex_demo) set(CMAKE_CXX_STANDARD 17) # 替换为你自己的CPLEX安装根路径 set(CPLEX_ROOT "/Applications/CPLEX_Studio2211") # 替换为对应芯片的库路径 set(CPLEX_LIB_PATH_SUFFIX "arm64_osx/static_pic") include_directories(${CPLEX_ROOT}/concert/include ${CPLEX_ROOT}/cplex/include) link_directories(${CPLEX_ROOT}/concert/lib/${CPLEX_LIB_PATH_SUFFIX} ${CPLEX_ROOT}/cplex/lib/${CPLEX_LIB_PATH_SUFFIX}) add_compile_definitions(IL_STD) add_executable(cplex_demo main.cpp) target_link_libraries(cplex_demo ilocplex concert cplex m pthread)
- 保存文件后CLion会自动重载CMake配置,之后直接点击编译、运行、调试按钮即可正常使用,代码补全、索引、重构的体验更适合代码量较大的项目。
方案3:新版Xcode(适配原有Xcode使用习惯)
旧教程失效的核心原因是新版Xcode调整了编译配置的入口和参数继承逻辑,按以下步骤配置即可:
- 打开Xcode,新建macOS平台下的Command Line Tool项目,语言选择C++
- 点击项目根节点,选中对应Target,切换到Build Settings标签页,注意选择顶部的「All」而非「Basic」,否则会隐藏部分配置项
- 找到
Header Search Paths项,添加前述两个CPLEX头文件路径,选择recursive模式 - 找到
Library Search Paths项,添加前述两个CPLEX静态库路径,选择recursive模式 - 找到
Other C++ Flags项,添加参数-DIL_STD - 找到
Other Linker Flags项,添加参数-lilocplex -lconcert -lcplex -lm -lpthread - 切换到Build Phases标签页,展开
Link Binary With Libraries项,将前述三个静态库文件直接拖入列表即可,注意不要选择动态库,否则运行时会触发库加载错误。
注意事项:M系列芯片Mac必须安装对应arm64架构版本的CPLEX,不要安装x86版本通过Rosetta转译运行,否则会出现编译通过但运行时随机崩溃、求解速度大幅下降的问题。所有示例中的版本号
2211对应CPLEX 22.1.1版本,请替换为你自己实际安装的版本号。
内容的提问来源于stack exchange,提问作者MK_OR
相关产品推荐
相关产品推荐

