Интеграция Conan CMake и Embarcadero

Я пытаюсь заставить Conan с CMake работать с компилятором Embarcadero Tokyo 10.2.3. Я могу сделать CMake с Embarcadero, следуя его руководству. Но, похоже, проблема с Конаном. Так что я делаю conan install. Потом делаю cmake .. -DCMAKE_CXX_COMPILER="bcc32c.exe" -DCMAKE_C_COMPILER="bcc32c.exe" -DCMAKE_VERBOSE_MAKEFILE=1 -G Ninja. Я получаю ошибку

Неверное "Visual Studio". Toolset указывает компилятор как MSVC, но CMake обнаружил Embarcadero

Профиль conan по умолчанию показывает compiler=Visual Studio, что, как я считаю, является источником проблемы. Но не знаю, как изменить его на Embarcadero (не распознает), или если изменить профиль по умолчанию - это выход. Мой файл CMakeLists.txt выглядит так (в основном по умолчанию)

project(Timer)
cmake_minimum_required(VERSION 3.11)

include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup()

add_executable(timer timer.cpp)
target_link_libraries(timer ${CONAN_LIBS})

Полный вывод cmake приведен ниже:

-- The C compiler identification is Embarcadero 7.30.36015
-- The CXX compiler identification is Embarcadero 7.30.36015
-- Check for working C compiler: C:/Program Files (x86)/Embarcadero/Studio/19.0/bin/bcc32c.exe
-- Check for working C compiler: C:/Program Files (x86)/Embarcadero/Studio/19.0/bin/bcc32c.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Embarcadero/Studio/19.0/bin/bcc32c.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Embarcadero/Studio/19.0/bin/bcc32c.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Current conanbuildinfo.cmake directory: C:/Mathew Joy/Source/mytimer/build
CMake Error at build/conanbuildinfo.cmake:579 (message):
  **Incorrect 'Visual Studio'.  Toolset specifies compiler as 'MSVC' but CMake
  detected 'Embarcadero'**
Call Stack (most recent call first):
  build/conanbuildinfo.cmake:237 (conan_check_compiler)
  CMakeLists.txt:5 (conan_basic_setup)

person Mathew Joy    schedule 25.05.2018    source источник
comment
Я отправил ответ. Для более интерактивного обсуждения этой темы, возможно, будут полезны проблемы с github или канал CppLang slack conan.   -  person drodri    schedule 25.05.2018


Ответы (2)


Вам необходимо настроить файл settings.yml по умолчанию, который можно найти в <userhome>/.conan/settings.yml

В этом файле определены некоторые из самых популярных компиляторов, вы можете добавить что-то вроде:

compiler:
    sun-cc:
        ...
    gcc:
        version: ["4.1", "4.4", "4.5", "4.6", "4.7", "4.8", "4.9",

    Visual Studio:
        runtime: [MD, MT, MTd, MDd]
        version: ["8", "9", "10", "11", "12", "14", "15"]
        ...
    Embarcadero:
        version: ["V1", "V2"...]

Этот файл можно совместно использовать и синхронизировать с командой, а также использовать на машинах CI с помощью команды conan config install.

Затем вы можете для удобства добавить значения в свой профиль по умолчанию вместо значений Visual Studio.

Вероятно, что большая часть логики, предоставляемой встроенными помощниками сборки, такими как CMake, будет ограничена для этого компилятора, поскольку он ее не распознает. Вы можете запустить свою логику для прямого вызова системы сборки, если это так:

def build(self):
    self.run("cmake . -G ....")
    self.run("cmake --build . --config Release")

Если вы хотите правильно собирать и создавать пакеты для разных конфигураций, вам следует параметризовать вышеуказанное, используя настройки и параметры, если это необходимо.

Все это предполагает, что вы будете создавать и в зависимости от ваших собственных пакетов, поскольку существующие пакеты в общедоступном репозитории conan-center будут для популярных компиляторов, поэтому двоичные файлы будут несовместимы, и рецепты, скорее всего, не будут реализовывать сборка из исходников с помощью Embarcadero.

person drodri    schedule 25.05.2018

Visual Studio 2019 C ++ намного лучше, чем Embarcadero. Я использовал как версию Tokyo, так и версию Rio, и здесь нет никакого сравнения. Кроме того, вы можете загрузить Managed C ++, который называется C ++ CLR (не CLI), который позволит вам интегрировать формы / консоли .NET с собственными приложениями C ++.

Visual Studio 2019 C ++ хорошо работает при создании библиотек Xamarin IOS, которые можно легко интегрировать с C # для Xamarin Forms. Xamarin Forms работает как для Android, так и для IOS (Xamarin).

В июле 2019 года Embarcadero наконец добавила 64-битную операционную систему Mac OS, а MAC стал 64-битным с 2008 года.

Это должно вам кое-что сказать.

person user10868910    schedule 28.05.2020