无法使用.asm文件生成CLion项目

无法使用.asm文件生成CLion项目,c,assembly,cmake,x86-64,clion,C,Assembly,Cmake,X86 64,Clion,在Linux上运行CLion,我一直在尝试使.asm文件正常工作。这就是我的测试项目的样子(它在Windows/Mac上运行100%,只需在.asm文件中添加.intel\u syntax) 安装了NASM程序集支持插件 主要条款c: #include <stdio.h> extern long tes(long); int main() { printf("%ld", tes(5)); printf("Hello, World!\n"); return

Linux
上运行
CLion
,我一直在尝试使.asm文件正常工作。这就是我的测试项目的样子(它在
Windows/Mac
上运行
100%
,只需在
.asm
文件中添加
.intel\u syntax

安装了
NASM
程序集支持插件

主要条款c:

#include <stdio.h>

extern long tes(long);

int main() {
    printf("%ld", tes(5));
    printf("Hello, World!\n");
    return 0;
}
CMakeLists.txt:

cmake_minimum_required(VERSION 3.15)
project(Testt C)
enable_language(C ASM)

set(CMAKE_C_STANDARD 99)

set ( SOURCES 
        main.c 
        tes.asm)

add_executable(program  ${SOURCES} )
如何配置
CLion
,以便将
tes
用作
C
中的方法?我期望
tes(x)=x
,但不知何故,我的项目没有编译:

 ====================[ Build | program | Debug ]=================================
/snap/clion/99/bin/cmake/linux/bin/cmake --build /home/user/CLionProjects/Testt/cmake-build-debug --target program -- -j 4
make: *** No rule to make target 'program'.  Stop.
感谢您的帮助

您需要使用

enable_language(ASM_NASM)
不确定CMake规则是否会识别
.asm
扩展,在这种情况下,您可能需要添加

set_source_files_properties(${ASM_SOURCES} PROPERTIES LANGUAGE ASM_NASM)
刚刚创建了这些文件,它们使用MKSYS MSYS与gcc 9和nasm 2.14一起工作:

main.c CMakeLists.txt 你需要使用

enable_language(ASM_NASM)
不确定CMake规则是否会识别
.asm
扩展,在这种情况下,您可能需要添加

set_source_files_properties(${ASM_SOURCES} PROPERTIES LANGUAGE ASM_NASM)
刚刚创建了这些文件,它们使用MKSYS MSYS与gcc 9和nasm 2.14一起工作:

main.c CMakeLists.txt
我知道你没有问这个问题,也没有走那么远,但供将来参考:由于多种原因,你的代码无法与
nasm
汇编。谢谢你让我知道,我很困惑,因为它今天在Windows&Mac上运行得很好。为什么不起作用?你建议如何集成.asm文件呢?不幸的是,我不能帮你处理cmake的东西。但是
.global
不是nasm语法(删除前导点),并且
mov rax、edi
由于寄存器大小不同而无效。另外
.text:
是一个标签,您可能指的是
节.text
(但这是默认值)。我尝试了这个,但仍然没有成功。不过,它在Mac上运行。你不需要启用C,因为它已经启用了。我知道你没有问这个问题,也没有走那么远,但供将来参考:由于多种原因,你的代码不会与
nasm
组合。谢谢你让我知道,我很困惑,因为它今天在Windows&Mac上运行得非常好。为什么不起作用?你建议如何集成.asm文件呢?不幸的是,我不能帮你处理cmake的东西。但是
.global
不是nasm语法(删除前导点),并且
mov rax、edi
由于寄存器大小不同而无效。另外
.text:
是一个标签,您可能指的是
节.text
(但这是默认值)。我尝试了这个,但仍然没有成功。不过它在Mac上运行。你不需要启用C,因为它已经启用了。谢谢!第一个命令没有更改任何内容,第二个命令抛出一条错误消息,询问CMake NASM编译器。这可能就是问题所在。它要求提供以下文件:CMakeDetermineNASMCompiler.cmake CMakeNASMCompiler.cmake CMakeNASMCompiler.cmake和变量cmake_NASM_COMPILER_ENV_VAR cmake_NASM_COMPILER该NASM编译器在哪里?您可以查看cmake安装文件夹。应该有一个模块目录,其中包含CMake已知的所有编译器。检查名称中是否有NASM文件。i、 E.我安装了CMake 3.15,并且有“CMakeASM_NASMInformation.CMake”,在本例中,这意味着语言名称为“ASM_NASM”。我认为文件应该与CMake一起安装。你用了带下划线的“ASM_NASM”吗?如果cmake抱怨cmake决定论。。。这意味着您使用了“NASM”作为语言,因为cmake正在寻找它。谢谢!第一个命令没有更改任何内容,第二个命令抛出一条错误消息,询问CMake NASM编译器。这可能就是问题所在。它要求提供以下文件:CMakeDetermineNASMCompiler.cmake CMakeNASMCompiler.cmake CMakeNASMCompiler.cmake和变量cmake_NASM_COMPILER_ENV_VAR cmake_NASM_COMPILER该NASM编译器在哪里?您可以查看cmake安装文件夹。应该有一个模块目录,其中包含CMake已知的所有编译器。检查名称中是否有NASM文件。i、 E.我安装了CMake 3.15,并且有“CMakeASM_NASMInformation.CMake”,在本例中,这意味着语言名称为“ASM_NASM”。我认为文件应该与CMake一起安装。你用了带下划线的“ASM_NASM”吗?如果cmake抱怨cmake决定论。。。这意味着你使用了“NASM”作为语言,正如cmake所寻找的那样。
section text

global test

test:
    mov rax, 0
    ret
cmake_minimum_required(VERSION 3.15)
project(Test)
enable_language(ASM_NASM)

set(CMAKE_C_STANDARD 99)

set(ASM_SOURCES
     test.asm
)

set (SOURCES
     main.c 
     ${ASM_SOURCES}
)

set_source_files_properties(${ASM_SOURCES} PROPERTIES LANGUAGE ASM_NASM)

add_executable(program  ${SOURCES})