C ++: Проблемы с make-файлом оптимизатора Cplex / cp при сборке проекта с использованием Clion с MinGW и компилятором g ++ - PullRequest
0 голосов
/ 04 апреля 2020

Мой проект C ++ не может быть собран, когда я использую внешние библиотеки оптимизатора cplex / cp. Я использую Cplex версии 12.9 на Windows 7 с компилятором g ++. Я получаю следующую ошибку:

C: / PROGRA ~ 1 / IBM / ILOG / CPLEX_ ~ 1 / концерта / include / ilconcert / ilosys.h: 262: 10: роковым ошибка: generi c .h : нет такого файла или каталога

Я проверил, что мой компилятор / MinGw обновлен. Я также попытался переключить набор инструментов в Clion на Visual Studio, но это приводит к другим ошибкам. Я смог запустить пример кода в cplex \ examples \ x64_windows_vs2017 \ stat_mda, используя Visual Studio, но в этих проектах примеров нет сравнительных файлов makefile для сравнения, к сожалению. Мой коллега смог запустить код на Linux с помощью компилятора g ++ в Clion.

Файл make, который я использую, находится ниже:

cmake_minimum_required(VERSION 3.15)
project(M_MDD)

include_directories("C:/Program Files/IBM/ILOG/CPLEX_Studio129/cpoptimizer/include/")
include_directories("C:/Program Files/IBM/ILOG/CPLEX_Studio129/concert/include/")
include_directories("C:/Program Files/IBM/ILOG/CPLEX_Studio129/cplex/include/")
include_directories("C:/Program Files/boost_1_55_0")

set(CMAKE_CXX_FLAGS  "-Wall ${CMAKE_CXX_FLAGS} -DIL_STD -g -O0 -ggdb -std=c++11")

include_directories(src)

add_executable(M_MDD
        src/instances/flowshop_instances.cpp
        src/instances/flowshop_instances.hpp
        src/main.cpp
        src/mip.cpp
        src/mip.hpp
        src/util.hpp)

link_directories("C:/Program Files/IBM/ILOG/CPLEX_Studio129/cplex/lib/x64_windows_vs2017/stat_mdd/")
link_directories("C:/Program Files/IBM/ILOG/CPLEX_Studio129/concert/lib/x64_windows_vs2017/stat_mdd/")
link_directories("C:/Program Files/IBM/ILOG/CPLEX_Studio129/cpoptimizer/lib/x64_windows_vs2017/stat_mdd/")

target_link_libraries(M_MDD cplex)
target_link_libraries(M_MDD concert)
target_link_libraries(M_MDD cp)
target_link_libraries(M_MDD pthread)

Спасибо!

Ответы [ 2 ]

1 голос
/ 04 апреля 2020

Подробные системные требования CPLEX (нажмите «Версия 12.9.0», «Windows», «Предварительные условия») показывают, что Visual Studio 2015-2019 являются единственными поддерживаемыми компиляторами на Windows , В частности, нельзя ожидать, что библиотеки C ++ будут совместимы с g ++ (например, из-за искажения имен, et c.). Напротив, если вы посмотрите на системные требования для Linux, вы увидите, что g ++ там поддерживается .

Если мы рассмотрим полученную ошибку, то имеет смысл , В ilosys.h, строка 262, мы имеем:

#if !(defined(name2))
# if defined(ILO_MSVC) || defined(ILO_LINUX) || defined(ILO_APPLE) || defined(ILO_HP11)
#  undef name2
#  define name2(a,b)      _name2_aux(a,b)
#  define _name2_aux(a,b)      a##b
# else
#include "generic.h"
# endif
#endif

ILO_MSVC не определено, поэтому мы попадаем в строку #include "generic.h".

Как вы упомянули, make-файлов нет для примеров C / C ++ на Windows. Однако файлы проекта Visual Studio содержат все необходимое для настройки проекта в Visual Studio. Для получения дополнительной информации о настройке ваших проектов C ++ в Visual Studio см. <COSDIR>/cplex/readmeWindows.html, где <COSDIR> - это место, в которое вы установили CPLEX Optimization Studio.

0 голосов
/ 09 апреля 2020

У меня недавно была такая же проблема, когда я перешел в clion для проекта. Это мне очень помогло:

https://github.com/ampl/mp/blob/master/support/cmake/FindCPLEX.cmake https://github.com/martinWANG2014/CplexCPlusPlusDemo

Надеюсь, вам это тоже поможет,

D

...