Форум программистов, компьютерный форум, киберфорум
Наши страницы
Rius
Войти
Регистрация
Восстановить пароль
Оценить эту запись

Русификация вывода компилятора MSVC в QtCreator

Запись от Rius размещена 20.02.2018 в 07:38
Обновил(-а) Rius 21.02.2018 в 10:18 (Добавлен вариант на PowerShell)

VS 2017 Community русская, Windows 10 Home x64 русская,
QtCreator 4.5.1, MSVC 2017

Вариант на BAT-файле
  1. Берём статическую (чтобы не искать потом библиотеки зависимостей) сборку iconv для Windows. Например, из проекта mlocati/gettext-iconv-windows, gettext0.19.8.1-iconv1.14-static-64.zip.
  2. Куда-нибудь распаковываем.
  3. Переходим в каталог с jom.exe, например c:\Qt\Qt5.10.1\Tools\QtCreator\bin\ .
  4. Создаём файл jom.bat, в котором вызываем jom.exe и передаём его вывод в iconv:
    Windows Batch file
    1
    2
    
    @echo off
    c:\Qt\Qt5.10.1\Tools\QtCreator\bin\jom.exe %* | d:\Software\Installed\iconv1.14\bin\iconv.exe -f CP866 -t WINDOWS-1251
  5. В параметрах сборки заменяем путь с jom.exe на jom.bat.
    Нажмите на изображение для увеличения
Название: 1.PNG
Просмотров: 278
Размер:	11.2 Кб
ID:	4682
  6. Запускаем пересборку и видим русский текст:
    Нажмите на изображение для увеличения
Название: 2.PNG
Просмотров: 278
Размер:	26.6 Кб
ID:	4683

С компилятором работает. А вот если ошибки выдаёт линкер, то iconv спотыкается - сообщения почему-то идут уже в нормальной кодировке и конвертировать их не надо...

Вариант на PowerShell
  1. Переходим в каталог с jom.exe, например c:\Qt\Qt5.10.1\Tools\QtCreator\bin\ .
  2. Создаём файл jom.bat с вызовом скрипта на PowerShell:
    Windows Batch file
    1
    2
    
    @echo off
    PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& 'c:\Qt\Qt5.10.1\Tools\QtCreator\bin\jom.ps1' %*"
  3. Создаём файл jom.ps1:
    PowerShell
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    
    $ErrorActionPreference = "Stop"
    #$VerbosePreference = "Continue"
     
    $jomPath = Join-Path $PSScriptRoot "jom.exe"
     
    function RunConsole($scriptBlock)
    {
        [Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding("windows-1251")
     
        function ConvertTo-Encoding ([string]$From, [string]$To)
        {
            Begin
            {
                $encFrom = [System.Text.Encoding]::GetEncoding($From)
                $encTo = [System.Text.Encoding]::GetEncoding($To)
            }
            Process
            {
                $bytes = $encFrom.GetBytes($_)
                $bytes = [System.Text.Encoding]::Convert($encFrom, $encTo, $bytes)
                $encTo.GetString($bytes)
            }
        }
     
        &$scriptBlock | ConvertTo-Encoding cp866 windows-1251 
    }
     
    RunConsole {
        & $jomPath $args
    }
  4. В параметрах сборки заменяем путь с jom.exe на jom.bat.
    Нажмите на изображение для увеличения
Название: 1.PNG
Просмотров: 278
Размер:	11.2 Кб
ID:	4682
  5. Запускаем пересборку и видим русский текст.
    • От компилятора:
      Нажмите на изображение для увеличения
Название: 2018-02-20_21-33-56.png
Просмотров: 238
Размер:	18.8 Кб
ID:	4684
    • И от линкера:
      Нажмите на изображение для увеличения
Название: 2018-02-20_21-34-22.png
Просмотров: 160
Размер:	8.3 Кб
ID:	4685

Конвертирование кодировки вывода консольной команды на PowerShell взято из статьи Powershell и кирилица в консольных приложениях
Размещено в Windows, Qt
Просмотров 390 Комментарии 0
Всего комментариев 0
Комментарии
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru