CMake版本3.4.3
Visual Studio 14 2015解决方案文件
我正在尝试使用以下语法为CMAKE设置rc编译器的位置标志,但它始终设置为值/ l" 0x0409"。
set(rc_flags "/l 0x809")
set(CMAKE_RC_FLAGS ${rc_flags})
此外,CMAKE总是为rc编译器设置cl编译器的标志,我无法停止。
任何帮助将不胜感激!
修改
我添加了cmake和visual studio版本的版本,该命令仍然使用/ l" 0x0409"当使用@Florian的片段加上它时,它使用我为rc.exe命令指定的cl.exe命令的标志,这是不正确的。
答案 0 :(得分:1)
引用问题已通过CMake 3.1版修复(请参阅"0010194: setting CMAKE_RC_FLAGS has no affect on rc flags")。
所以我已经尝试使用CMake版本3.6.0和#34; 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
选项显示在&#34;项目配置属性/资源/命令行/附加选项&#34;下。因此,我无法重现任何引用或忽略选项问题。
Makefile vs.解决方案
一般来说,RC命令行 - 包括其标志 - 在CMakeRCInformation.cmake
中定义。但是,如果使用makefile生成器,则只能对RC命令行进行绝对控制。在那里,您可以将CMAKE_RC_COMPILE_OBJECT
文件中的CMakeLists.txt
变量覆盖为:
set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> /l 0x809 /fo<OBJECT> <SOURCE>")
Visual Studio解决方案生成器的RC行为直接编码为cmVisualStudio10TargetGenerator::WriteRCOptions()
。此代码没有(过度)写入任何RC <Culture>
部分,因此您将始终在那里看到默认的/l"0x0409"
。但是CMake生成的<AdditionalOptions>
部分会处理这个/覆盖这些默认值。