我们很高兴地宣布 Conan 1.48 已经发布,并带来了一些重要的新功能和错误修复。我们改进了 CMakePresets 集成。此外,我们还添加了新的“conan new”Autotools 模板。我们在 Apple 平台上添加了用于 bitcode、arc 和可见性标志的 CMakeToolchain 配置。此版本还添加了在 Windows 中生成 env .ps1 而不是 .bat 的支持。

CMakePresets 集成的改进

从 Conan 1.47 开始,我们开始提供对 CMakePresets 的支持。此文件在 Conan 内部用于传递信息,例如生成器和工具链文件位置,从 CMakeToolchainCMake 构建助手。除此之外,使用此文件还可以改善开发人员在本地使用 Conan 和 CMake 时的工作流程体验。让我们来看一个使用 Visual Studio Code 和安装的 CMake Tools 使用此文件的示例。

从一个使用 Zlib 库的具有以下结构的简单消费者项目开始

├── CMakeLists.txt
├── conanfile.txt
└── src
    └── main.cpp

其中 conanfile.txt 需要 zlib/1.2.11 并添加 CMakeDepsCMakeToolchain 生成器

[requires]
zlib/1.2.12

[generators]
CMakeDeps
CMakeToolchain

CMakeLists.txt 非常简单,如下所示:

cmake_minimum_required(VERSION 3.15)
project(compressor CXX)

find_package(ZLIB REQUIRED)

add_executable(${PROJECT_NAME} src/main.cpp)
target_link_libraries(${PROJECT_NAME} ZLIB::ZLIB)

main.cpp 代码只会显示我们是否使用 Debug 或 Release 配置以及 zlib 的版本。

#include <iostream>

#include <zlib.h>

int main(void) {
    #ifdef NDEBUG
    std::cout << "Release!" << std::endl;
    #else
    std::cout << "Debug!" << std::endl;
    #endif
    std::cout << "Zlib version: " << zlibVersion() << std::endl;
    return 0;
}

运行 conan install 命令以安装 ReleaseDebug 配置的 Zlib 依赖项

conan install . --build=missing
conan install . -s build_type=Debug --build=missing

运行此命令后,Conan 将生成一个 CMakePresets.json 文件。此文件存储可以在 Visual Studio Code 中选择的不同预设。选择 Release 作为配置预设

Configure CMake

并运行构建

Build the project

现在可以轻松地在预设之间切换以启动不同的构建配置。

conan new 命令的新 Autotools 模板

如您所知,conan new 命令是一种使用 Conan 创建 C++ 项目模板 的实用方法。在 Conan 1.48 之前,有 CMake、Meson、Bazel 和 MSBuild 的模板。现在,您还可以使用新的模板使用 Conan 为库和可执行文件创建项目示例。

您可以使用以下命令进行尝试:

conan new hello/1.0 -m=autotools_lib 
conan new app/1.0 -m=autotools_exe

要构建项目,只需运行:

conan create .

如果您希望在 Conan 中使用更多内置模板,请随时将其贡献到 GitHub 存储库。此外,请记住,您始终可以使用自己定义的模板。请 查看文档 以获取更多信息。

CMakeToolchain 配置支持 Apple 平台上的 bitcode、arc 和可见性标志

此版本在 CMakeToolchain 中添加了对以下 conf 属性的支持

  • tools.build:tools.apple:enable_bitcode 布尔值用于启用/禁用 Apple Bitcode。这将设置 CMAKE_XCODE_ATTRIBUTE_BITCODE_GENERATION_MODECMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE CMake 变量(在使用 CMake Xcode 生成器时)。如果使用其他生成器,它会将 -fembed-bitcode 标志添加到 CMAKE_CXX_FLAGSCMAKE_C_FLAGS 中。

  • tools.build:tools.apple:enable_arc 布尔值用于启用/禁用 Apple Clang ARC 标志。这将设置 CMAKE_XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC CMake 变量(在使用 CMake Xcode 生成器时)。如果使用其他生成器,它会将 -fobjc-arc-fno-objc-arc 标志添加到 CMAKE_CXX_FLAGSCMAKE_C_FLAGS 中。

  • tools.build:tools.apple:enable_visibility 这将在使用 CMake Xcode 生成器时设置 CMAKE_XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN CMake 变量。如果使用其他生成器,它会将 -fvisibility 标志添加到 CMAKE_CXX_FLAGSCMAKE_C_FLAGS 中。

在 Windows 中选择批处理或 PowerShell 脚本的配置

此版本提供了一个新的配置选项来选择批处理或 PowerShell 脚本生成。如您所知,Conan Environment 类默认在 Windows 中将信息保存在 .bat 批处理文件中。现在,将 tools.env.virtualenv:powershell 设置为 True,您可以生成 .ps1 PowerShell 脚本。这还将应用于 VirtualBuildEnvVirtualRunEnv 生成器,因为它们在内部使用 Environment 类。



除了上面列出的项目之外,还有一些较小的错误修复,您可能希望阅读。如果是这样,请参阅 更改日志 以获取完整列表。

我们希望您喜欢此版本,并期待您的 反馈