【问题标题】:Building LLVM with cmake. Does -D_GLIBCXX_USE_CXX11_ABI=0 get overridden?使用 cmake 构建 LLVM。 -D_GLIBCXX_USE_CXX11_ABI=0 是否被覆盖?
【发布时间】:2021-01-24 14:31:41
【问题描述】:

我尝试构建 LLVM。 这就是我尝试的方式……

    mkdir -p src/llvm-$(LLVM_VERSION).src/build
    cd src/llvm-$(LLVM_VERSION).src/build && \
        $(CMAKE) -GNinja \
            -DCMAKE_INSTALL_PREFIX=$(BUNDLE) \
            -DCMAKE_CXX_FLAGS="-D_GLIBCXX_USE_CXX11_ABI=0 -std=c++11 -static-libgcc -static-libstdc++ -l:libstdc++.a" \
            -DLLVM_TARGETS_TO_BUILD="X86;NVPTX" \
            -DLLVM_PARALLEL_COMPILE_JOBS=$(BUILD_JOBS) \
            -DLLVM_PARALLEL_LINK_JOBS=2 \
            -DLLVM_USE_CRT_RELEASE=MD \
            -DLLVM_USE_CRT_DEBUG=MDd \
            -DLLVM_STATIC=ON \
            -DLLVM_INCLUDE_TESTS=OFF \
            -DLLVM_INCLUDE_EXAMPLES=OFF \
            -DLLVM_BUILD_LLVM_C_DYLIB=OFF \
            -DLLVM_ENABLE_TERMINFO=OFF \
            -DLLVM_ENABLE_UNWIND_TABLES=OFF \
            -DLLVM_ENABLE_RTTI=ON \
            .. && \
        $(CMAKE) --build . && \
        $(CMAKE) --build . --target install

您可以在 -DCMAKE_CXX_FLAGS 中看到 -D_GLIBCXX_USE_CXX11_ABI=0。 LLVM编译完成后,libLLVM*.a仍然包含abi:cxx11符号。

llvm-config 显示,llvm 构建过程完全忽略了“-D_GLIBCXX_USE_CXX11_ABI=0”标志。

> ./bundle/bin/llvm-config --cxxflags
-I/home/leonard/Documents/Develop/build_as_deps/bundle/include -std=c++11   -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -D_GNU_SOURCE -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS

您知道如何以禁用 abi:cxx11 符号并防止“-D_GLIBCXX_USE_CXX11_ABI=0”被覆盖的方式构建 llvm?

【问题讨论】:

  • 我写在我的问题描述中。但似乎我需要确保它被注意到。请注意,-D_GLIBCXX_USE_CXX11_ABI=0 在 -DCMAKE_CXX_FLAGS 中定义。尽管如此,我还是得到了 abi:cxx11 符号。

标签: cmake build llvm


【解决方案1】:

您似乎将 cmake 选项(通过 -D 指定)与 C/C++ 编译器宏(也通过 -D 指定,但由编译器指定)混淆了。 cmake 很高兴地忽略了您的 -D_GLIBCXX_USE_CXX11_ABI,因为它不是 cmake 选项(并且您应该会看到有关此的警告,即构建系统未使用该值)。

由于您需要添加额外的宏定义,您需要更改CMAKE_CXX_FLAGS cmake 变量。

【讨论】:

  • 不确定,因为 -D_GLIBCXX_USE_CXX11_ABI 已在 CMAKE_CXX_FLAGS 字符串中使用。它是一条长线,需要水平滚动才能看到。
  • 我更改了 CMAKE_CXX_FLAGS 中的参数顺序。以提高其知名度。现在不需要滚动了。
猜你喜欢
  • 1970-01-01
  • 2015-07-06
  • 1970-01-01
  • 2022-12-18
  • 1970-01-01
  • 2011-07-03
  • 2014-04-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多