如何将.asm代码正确添加到内部版本?

时间:2019-01-04 15:37:48

标签: cmake nasm

我在NASM中编写程序,并希望将cmake用作构建引擎。

现在我以以下方式使用它:

execute_process (
    COMMAND C:/NASM/x32/nasm.exe -f bin launch.asm -o ${CMAKE_CURRENT_BINARY_DIR}/Launch
    WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
)

但是有一个问题:launch.asm的构建会一直发生,即使它没有变化。仅当launch.as更改时,如何避免它并进行构建?

UPD1 :以下面的写法 vre 制作以下cmake文件-

CMAKE_MINIMUM_REQUIRED(VERSION 3.12.0)
project(Launch LANGUAGES ASM_NASM)

enable_language(ASM_NASM)
SET(ASM_DIALECT "-NASM")
set(CMAKE_ASM_NASM_FLAGS "-f bin")

add_executable(${PROJECT_NAME} launch.asm)
set_target_properties(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE NASM) 

我使用以下字符串生成源:

cmake .. -G"Visual Studio 15 2017"
cmake --build . --target ALL_BUILD

我收到问题:

  1. 生成源文件时-出现以下错误:
  

CMake错误:未设置内部CMake变量所需的错误,cmake可能   无法正确构建。   缺少的变量是:CMAKE_EXE_LINKER_FLAGS

     

CMake错误:未设置内部CMake变量所需的错误,cmake可能   无法正确构建。   缺少的变量是:   CMAKE_EXE_LINKER_FLAGS_DEBUG

     

CMake错误:内部需要错误   CMake变量未设置,cmake可能无法正确构建。   ....

  1. NASM启动不正确-我想生成bin,但是有添加win32
  

_NASM:组装launch.asm cmd.exe / D / C“ C:\ Users \ AeroSun \ AppData \ Local \ Temp \ tmp0a9e10beedeb4b9986b66e79724488ee.cmd”   “ C:/NASM/x64/nasm.exe” -o Launch.dir \ Debug \ launch.obj -fwin32   -DCMAKE_INTDIR =“调试” -f bin“ L:\ DevProj \ Astra \ src \ Ker nel \ Launch \ Ix86x64 \ launch.asm”

  1. 最后它生成.obj文件并在链接步骤中中断,但我只需要bin文件
  

Launch.dir \ Debug \ launch.obj:致命错误LNK1107

所以主要问题-cmake可以与汇编程序一起使用吗?如果可以的话,是否存在最小的 可行 示例?

0 个答案:

没有答案