使用 cmake、clangcl 和 Visual Studio 2022 构建 zlib 时出现构建问题

问题描述 投票:0回答:1

我想使用 clangcl 而不是 VS2022 标准工具集构建 zlib。所以我发现我可以使用 cmake 的 -T 选项来实现这一点。它正确选择 clang-cl 但我遇到了一些奇怪的编译问题。

C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\lib\clang\17\include\stddef.h(18): warning RC4067: unexpected characters following '#if/#elif' directive; newline expected 
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\lib\clang\17\include\vadefs.h(12): fatal error RC1021: invalid preprocessor command 'include_next' 

重现问题:

  1. 克隆https://github.com/madler/zlib.git

  2. 安装VS 2022和LLVM工具集+msbuild工具集(应该是clang 17)

  3. 创建文件夹_build并输入_build

  4. 使用以下命令进行配置

    cmake -G "Visual Studio 17 2022" -T clangcl -DCMAKE_MSVC_RUNTIME_LIBRARY="MultiThreaded$<$<CONFIG:Debug>:Debug>DLL" -DZLIB_BUILD_EXAMPLES:BOOL=OFF ..

  5. 构建 zlib

    cmake --build .

您将收到警告和错误。有人知道这里出了什么问题吗? 我尝试了其他项目,使用 -T 选项这些项目工作得非常好。它似乎只出现在 zlib 中。

编辑: 在 Linux 上使用带有 clang 的 cmake、在 Windows 和 Linux 上使用 Android Ndk r26c 以及 Msvc 标准工具集,它可以完美地工作。

visual-studio cmake clang clang++ clang-cl
1个回答
0
投票

我发现了问题:

编译器警告/错误由 zlib1.rc 文件产生。我刚刚从构建中删除了该文件。现在可以了。

基本问题似乎是 zlib 没有单独构建静态或共享库的选项

© www.soinside.com 2019 - 2024. All rights reserved.