使用CMakeLists.txt配置CPLEX C++ API失败求助
解决CLion中CPLEX C++ API的CMake链接错误
你的问题出在CMake配置仅指定了头文件和库搜索目录,但未链接CPLEX所需的具体库,也未添加手动编译时的编译选项。以下是对应手动编译命令的完整CMake配置:
cmake_minimum_required(VERSION 3.23) project(cpp_cplex) # 设置C++标准 set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED ON) # 添加可执行文件 add_executable(cpp_cplex main.cpp) # 对应手动编译的-I参数:添加头文件路径 target_include_directories(cpp_cplex PRIVATE "/opt/ibm/ILOG/CPLEX_Studio201/cplex/include" "/opt/ibm/ILOG/CPLEX_Studio201/concert/include" ) # 对应手动编译的-L参数:添加库搜索目录 link_directories( "/opt/ibm/ILOG/CPLEX_Studio201/cplex/lib/x86-64_linux/static_pic" "/opt/ibm/ILOG/CPLEX_Studio201/concert/lib/x86-64_linux/static_pic" ) # 对应手动编译的编译选项:-m64 -fPIC -fno-strict-aliasing -fexceptions -DNDEBUG target_compile_options(cpp_cplex PRIVATE -m64 -fPIC -fno-strict-aliasing -fexceptions -DNDEBUG ) # 对应手动编译的-l参数:链接所需库,顺序必须和手动命令一致 target_link_libraries(cpp_cplex PRIVATE concert ilocplex cplex m pthread dl )
关键配置说明:
- 编译选项:完全对齐手动命令中的编译参数,确保生成的目标文件和CPLEX库的编译兼容性;
- 库链接顺序:必须遵循
concert -> ilocplex -> cplex -> 系统库的顺序,链接器会按此顺序解析符号,顺序错误会导致链接失败; - 目标级配置:使用
target_include_directories和target_compile_options替代全局命令,仅作用于当前可执行文件,避免污染项目全局配置。
替换你的CMakeLists.txt后,在CLion中执行Clean -> Reload CMake Project -> Build即可解决链接错误。
内容的提问来源于stack exchange,提问作者Christian
相关产品推荐
相关产品推荐

