CMake:当项目包含带有VS2013的.asm MASM源时,如何避免链接错误?

时间:2014-08-21 05:41:35

标签: assembly cmake

我正在使用带有“Visual Studio 12 2013”​​生成器的CMake 3.0.1。

我将.asm文件添加到项目中。然后,cmake --build .时发生了链接器错误LNK2026。

对于SAFESEH图像,LNK2026错误模块不安全。 http://msdn.microsoft.com/en-us/library/100ezk17.aspx

如果我手动添加项目属性如下,它可以正常工作。

  

< UseSafeExceptionHandlers>真< / UseSafeExceptionHandlers>

我可以在不更改生成的项目文件的情况下避免链接器错误吗?

这是一个无法使用生成的.vcxproj构建的简单项目。

交流转换器

extern void ExAsmCode();

int main(int argc, char** argv)
{
    ExAsmCode();
    return 0;
}

m.asm

.586
.model flat, c
MessageBoxA     proto STDCALL :dword, :dword, :dword, :dword

.data

MSG          DB 'masm', 0

.code

ExAsmCode PROC
    invoke MessageBoxA, 0, offset MSG, offset MSG, 0
    ret
ExAsmCode ENDP

end

的CMakeLists.txt

CMAKE_MINIMUM_REQUIRED(VERSION 3.0)

PROJECT(Ex)

ENABLE_LANGUAGE(ASM_MASM)

add_executable(Ex a.c m.asm)

1 个答案:

答案 0 :(得分:1)

/safeseh标志添加到来源:

set_source_files_properties(
    my.asm
    PROPERTIES
    COMPILE_FLAGS "/safeseh"
)