2016-07-12 2 views
0

CMake версии 3.4.3CMAKE набор флагов компилятора rc?

Visual Studio 14 2015 Файл решения

Я пытаюсь установить флаг местоположения для гс компилятора для CMake, используя следующий синтаксис, однако он всегда должен быть установлен на значение/л» 0x0409" .

set(rc_flags "/l 0x809") 
set(CMAKE_RC_FLAGS ${rc_flags}) 

Также CMAKE всегда устанавливает флаги для компилятора cl для компилятора rc, который я не могу остановить.

Любая помощь будет оценена!

Редактировать

Я добавил версию CMake и Visual Studio версии, команда по-прежнему использует/л «0x0409» флаг при использовании фрагмента из @Florian плюс он использует флаги я заданные для кл. Команда exe для команды rc.exe, которая неправильна.

ответ

0

Проблема с котировкой была установлена ​​с CMake версии 3.1 (см. "0010194: setting CMAKE_RC_FLAGS has no affect on rc flags").

Так я дал ваш пример попробовать с CMake версии 3.6.0 и "Visual Studio 14 2015" генератор и следующий код:

CMakeLists.txt

cmake_minimum_required(VERSION 3.1) 

project(TestRCCompilerFlags) 

file(WRITE main.cpp "int main() { return 0; }") 
file(WRITE main.rc "") 

set(rc_flags "/l 0x809") 
set(CMAKE_RC_FLAGS ${rc_flags}) 

add_executable(${PROJECT_NAME} main.cpp main.rc) 

И - как и ожидалось - опция /l 0x809 отображается в разделе «Свойства конфигурации проекта/Ресурсы/Командная строка/Дополнительные параметры». Поэтому я не мог воспроизвести какие-либо предложения или игнорировать проблемы с параметрами.

enter image description here

Makefile против решения

Вообще говоря командной строки RC - в том числе его флагов - определяется в CMakeRCInformation.cmake. Но вы используете только абсолютный контроль над командной строкой RC, если используете генераторы makefile. Там вы можете переписать CMAKE_RC_COMPILE_OBJECT переменные в файле CMakeLists.txt на что-то вроде:

set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> /l 0x809 /fo<OBJECT> <SOURCE>") 

Поведения RC генераторов Решения Visual Studio непосредственно закодировано в cmVisualStudio10TargetGenerator::WriteRCOptions(). В этом коде нет (over-) записи любого раздела RC <Culture>, поэтому там вы всегда увидите по умолчанию /l"0x0409". Но раздел <AdditionalOptions>, созданный CMake, позаботится об этом/перезаписал эти значения по умолчанию.

+0

Спасибо Флориан, но используя набор (CMAKE_RC_COMPILE_OBJECT "/l 0x809/fo ") тоже не работает. –

+0

@ simon-p-r Дополнительная информация пожалуйста. Вы установили (CMAKE_RC_FLAGS "/ l 0x809") 'в свой root' CMakeLists.txt' после команды проекта? Какая версия CMake, какой генератор и какая версия Visual Studion? Что именно означает «не работает»? Опция должна отображаться в разделе «Свойства конфигурации проекта/Ресурсы/Командная строка/Дополнительные параметры». – Florian

+0

Обновленный вопрос с информацией –

Смежные вопросы