【问题标题】:Conan CMake and Embarcadero integration柯南 CMake 和 Embarcadero 集成
【发布时间】:2020-05-29 01:27:46
【问题描述】:

我正在尝试使用 Embarcadero Tokyo 10.2.3 编译器运行带有 CMake 的柯南。我可以按照教程使用 Embarcadero 进行 CMake。但是问题似乎发生在柯南身上。所以我做conan install。然后我做cmake .. -DCMAKE_CXX_COMPILER="bcc32c.exe" -DCMAKE_C_COMPILER="bcc32c.exe" -DCMAKE_VERBOSE_MAKEFILE=1 -G Ninja。我收到错误

“Visual Studio”不正确。工具集将编译器指定为“MSVC”但 CMake 检测到“Embarcadero”

默认柯南配置文件显示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)

【问题讨论】:

  • 我已经发布了答案。有关此主题的更多互动讨论,可能 github 问题或 CppLang slack conan 频道会很有用。

标签: cmake c++builder conan


【解决方案1】:

您需要自定义默认的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"...]

此文件可以与团队共享和同步,并通过conan config install 命令在 CI 机器中使用。

然后,您可以将这些值添加到默认配置文件中以方便使用,而不是 Visual Studio 值。

很可能内置的构建助手(如CMake)提供的大部分逻辑对于这个编译器来说都是有限的,因为它不能识别它。如果是这种情况,您可以运行您的逻辑来直接调用构建系统:

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

如果您想为不同的配置正确构建和创建包,那么您应该根据需要使用设置和选项对上述内容进行参数化。

所有这些都假设您将创建并依赖于您自己的包,因为公共 conan-center 存储库中的现有包将用于流行的编译器,因此二进制文件将不兼容,并且配方很可能获胜'不要使用 Embarcadero 从源代码构建。

【讨论】:

    【解决方案2】:

    Visual Studio 2019 C++ 比 Embarcadero 好很多。东京版和里约版我都用过,没有可比性。此外,您还可以下载托管 C++,它称为 C++ CLR(不是 CLI),它允许您将 .NET 表单/控制台与本机 C++ 应用程序集成。

    Visual Studio 2019 C++ 在创建 Xamarin IOS 库时运行良好,可轻松与 C# 集成以用于 Xamarin Forms。 Xamarin Forms 适用于 Android 和 IOS (Xamarin)。

    2019年7月,Embarcadero终于加入了64位的Mac OS操作系统,而MAC从2008年开始就是64位了。

    这应该告诉你一些事情。

    【讨论】:

      猜你喜欢
      • 2021-11-14
      • 2021-12-15
      • 2023-03-11
      • 2021-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-08
      • 1970-01-01
      相关资源
      最近更新 更多