编译并将.asm文件链接到C ++代码

时间:2014-12-23 20:48:46

标签: c++ visual-studio-2010 assembly cmake

我在Windows上使用Visual Studio 2010.我有一堆.cpp文件和一个我想要一起编译的.asm文件。

现在我正在执行一个自定义命令来单独编译.asm,如下所示:

#windows 64 bit builds need an asm file that needs to be compiled separately
if (MSVC AND CMAKE_CL_64)
  add_custom_command(TARGET MYPROJECT
                            PRE_BUILD
                            COMMAND "$ENV{VCInstallDir}/bin/x86_amd64/ml64" /c /W2 /nologo /errorReport:none 
                            /Fo${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}.dir/Debug/ 
                            #/Fo"C:/MYPROJECT/Build/Main_ms100_64/MYPROJECT.dir/Debug/"
                            $CSrcDir}/masm64.asm
                            COMMENT "Building asm file")
endif()

这会将.obj文件作为其他obj文件放在正确的位置,但链接器似乎并未包含它。如何使链接器成为masm64.obj文件?

作为替代解决方案,我尝试将文件的源属性设置为" LANGUAGE ASM"但它仍然没有编译它。

1 个答案:

答案 0 :(得分:0)

我通常在文件本身上设置自定义构建工具。有一个复选框,表明输出是否参与构建。根据我的经验,我发现如果我检查了那个盒子,并且汇编器输出到正确的中间目录。我发现如果我使用自定义命令,我必须明确地将目标文件添加到链接器命令行。