2016-07-12 80 views
0

CMake的版本3.4.3CMAKE设置rc编译器标志?

的Visual Studio 2015年14解决方案文件

我将尝试使用下面的语法但它总是被设置为值/升来设置RC编译器C进行定位标志” 0x0409" 。

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

此外,CMAKE总是为无法停止的rc编译器的cl编译器设置标志。

任何帮助,将不胜感激!

编辑

我已经加入的CMake和Visual Studio版本的版本,命令仍然使用从@Florian的片段时,再加上它使用我为CL指定标志使用/ L“0x0409”的标志。 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

生成文件与解

一般来说RC命令行 - 包括其标记 - 在CMakeRCInformation.cmake定义。但是如果使用makefile生成器,你只能对RC命令行有绝对的控制权。在那里,你可以在你的CMakeLists.txt文件覆盖CMAKE_RC_COMPILE_OBJECT变量是这样的:

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

Visual Studio解决方案生成器的RC行为直接编码成cmVisualStudio10TargetGenerator::WriteRCOptions()。此代码不会(写)任何RC <Culture>部分,因此您将始终在那里看到默认的/l"0x0409"。但CMake生成的<AdditionalOptions>部分将负责这个/覆盖这些默认值。

+0

谢谢Florian但是使用集合(CMAKE_RC_COMPILE_OBJECT“/l 0x809/fo ”)也不起作用。 –

+0

@ simon-p-r请提供更多信息。您是否在项目命令后在您的根目录“CMakeLists.txt”中设置了(CMAKE_RC_FLAGS“/ l 0x809”)?哪个CMake版本,哪个发电机和哪个Visual Studion版本? “不工作”究竟意味着什么?该选项应显示在“项目配置属性/资源/命令行/附加选项”下。 – Florian

+0

更新的信息与问题 –