无法使用.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})