1

我正在尝试使用 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)
4

2 回答 2

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 从源代码构建。

于 2018-05-25T15:20:14.690 回答
0

Visual Studio 2019 C++ 比 Embarcadero 好很多。东京版和里约版我都用过,没有可比性。此外,您可以下载称为 C++ CLR(不是 CLI)的托管 C++,它允许您将 .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 位的。

那应该告诉你一些事情。

于 2020-05-28T17:27:46.013 回答