Conan 1.48:改进 CMakePresets 集成,新增 Autotools 模板,CMakeToolchain 配置支持 Apple 平台上的 bitcode、arc 和可见性标志,支持在 Windows 中生成 env .ps1 而不是 .bat。
我们很高兴地宣布 Conan 1.48 已经发布,并带来了一些重要的新功能和错误修复。我们改进了 CMakePresets 集成。此外,我们还添加了新的“conan new”Autotools 模板。我们在 Apple 平台上添加了用于 bitcode、arc 和可见性标志的 CMakeToolchain 配置。此版本还添加了在 Windows 中生成 env .ps1 而不是 .bat 的支持。
CMakePresets 集成的改进
从 Conan 1.47 开始,我们开始提供对 CMakePresets 的支持。此文件在 Conan 内部用于传递信息,例如生成器和工具链文件位置,从 CMakeToolchain 到 CMake 构建助手。除此之外,使用此文件还可以改善开发人员在本地使用 Conan 和 CMake 时的工作流程体验。让我们来看一个使用 Visual Studio Code 和安装的 CMake Tools 使用此文件的示例。
从一个使用 Zlib 库的具有以下结构的简单消费者项目开始
├── CMakeLists.txt
├── conanfile.txt
└── src
└── main.cpp
其中 conanfile.txt 需要 zlib/1.2.11 并添加 CMakeDeps 和 CMakeToolchain 生成器
[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
命令以安装 Release 和 Debug 配置的 Zlib 依赖项
conan install . --build=missing
conan install . -s build_type=Debug --build=missing
运行此命令后,Conan 将生成一个 CMakePresets.json 文件。此文件存储可以在 Visual Studio Code 中选择的不同预设。选择 Release 作为配置预设
并运行构建
现在可以轻松地在预设之间切换以启动不同的构建配置。
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_MODE
和CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE
CMake 变量(在使用 CMake Xcode 生成器时)。如果使用其他生成器,它会将-fembed-bitcode
标志添加到CMAKE_CXX_FLAGS
和CMAKE_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_FLAGS
和CMAKE_C_FLAGS
中。 -
tools.build:tools.apple:enable_visibility
这将在使用 CMake Xcode 生成器时设置CMAKE_XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN
CMake 变量。如果使用其他生成器,它会将-fvisibility
标志添加到CMAKE_CXX_FLAGS
和CMAKE_C_FLAGS
中。
在 Windows 中选择批处理或 PowerShell 脚本的配置
此版本提供了一个新的配置选项来选择批处理或 PowerShell 脚本生成。如您所知,Conan Environment 类默认在 Windows 中将信息保存在 .bat
批处理文件中。现在,将 tools.env.virtualenv:powershell
设置为 True
,您可以生成 .ps1
PowerShell 脚本。这还将应用于 VirtualBuildEnv 和 VirtualRunEnv 生成器,因为它们在内部使用 Environment
类。
除了上面列出的项目之外,还有一些较小的错误修复,您可能希望阅读。如果是这样,请参阅 更改日志 以获取完整列表。
我们希望您喜欢此版本,并期待您的 反馈。