Мезон выбирает неправильный компилятор (вместо GCC на Clang) - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь настроить свой проект для сборки с LLVM / clang ++, однако GCC всегда выбирается:

$ /opt/llvm/clang+llvm-7.0.1-x86_64-linux-gnu-ubuntu-18.04/bin/clang++ --version
clang version 7.0.1 (tags/RELEASE_701/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/llvm/clang+llvm-7.0.1-x86_64-linux-gnu-ubuntu-18.04/bin
$ 
$ CC=/opt/llvm/clang+llvm-7.0.1-x86_64-linux-gnu-ubuntu-18.04/bin/clang++ meson ~/build
The Meson build system
Version: 0.49.1
Source dir: ~/source
Build dir: ~/build
Build type: native build
Project name: test
Project version: 0.1.0
Native C++ compiler: ccache c++ (gcc 6.3.0 "c++ (Debian 6.3.0-18+deb9u1) 6.3.0 20170516")
Build machine cpu family: x86_64
Build machine cpu: x86_64
Message: Compiler: GCC
Dependency threads found: YES 
Build targets in project: 2
Found ninja-1.8.2 at /opt/ninja

Операционная система - Debian Linux 9.

Это meson.build файл:

## meson.build

project('MyPrj', 'cpp',
        version: '0.1.0',
        meson_version: '>= 0.44',
        license: 'GPL',
        default_options: [
            'cpp_std=c++17',
            'warning_level=3',
            'buildtype=release'
        ]
       )

#
# Compiler configuration
# To set a default compiler, from the OS shell:
#   $ CC=mycc meson <options>

compiler = meson.get_compiler('cpp')

warning_level = get_option('warning_level').to_int()

if compiler.get_id() == 'gcc'
    message('Compiler: GCC')
    libs_compiler = ['-lstdc++fs']
    libs_linker   = ['-lstdc++fs']
elif compiler.get_id() == 'clang'
    message('Compiler: LLVM/clang')
    libs_compiler = ['-stdlib=libc++']
    libs_linker   = ['-stdlib=libc++', '-lstdc++fs']
endif

add_global_arguments('-Wall', '-Wextra', '-Wmissing-declarations',
                     '-Wno-unused', # keep this commented out
                     libs_compiler,
                     language: 'cpp')

add_global_link_arguments(libs_linker, language: 'cpp')

# '.' will refer to current build directory
include_dirs = include_directories('.')

src = [ 'test.cc' ]

# External dependencies

thread_dep = dependency('threads')

# Build

test_a = static_library('test', src,
                           include_directories : include_dirs,
                          )

test_exe = executable('testexe', src,
                           include_directories : include_dirs
                          )

Как мне убедить Мезона использовать лязг?

1 Ответ

0 голосов
/ 14 февраля 2019

Установите соответствующие переменные среды C / C ++.то есть CC=clang и CXX=clang++.Затем запустите сборку, используя meson build-clang.

Это решит проблему.

...