Cmake编译\uuu asm程序集内联代码
我正在尝试编译Cmake编译\uuu asm程序集内联代码,c,cmake,clion,C,Cmake,Clion,我正在尝试编译quake2代码,该代码使用\uu asm关键字,如下所示: __declspec( naked ) int BoxOnPlaneSide (vec3_t emins, vec3_t emaxs, struct cplane_s *p) { static int bops_initialized; static int Ljmptab[8]; __asm { push ebx cmp bops_initiali
quake2
代码,该代码使用\uu asm
关键字,如下所示:
__declspec( naked ) int BoxOnPlaneSide (vec3_t emins, vec3_t emaxs,
struct cplane_s *p)
{
static int bops_initialized;
static int Ljmptab[8];
__asm {
push ebx
cmp bops_initialized, 1
je initialized
mov bops_initialized, 1
// more code...
我正在使用Clion,它在内部使用Cmake进行编译。问题是,在上面的代码中,我得到了以下错误
C:\Users\Shiro\ClionProjects\quake2\src\game\q_shared.c: In function
'BoxOnPlaneSide':
C:\Users\Shiro\ClionProjects\quake2\src\game\q_shared.c:423:8: error:
expected '(' before '{' token
__asm {
^
错误就从这里开始。那么,我怎样才能使它编译呢?我的CMakeLists.txt可能有任何更改吗?这是我现在拥有的一部分
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Traditional -std=gnu89")
这与CMake或Clion没有直接关系,但与您正在使用的编译器有关。GNU编译器集合(GCC)不像内联汇编程序那样对语言的扩展使用相同的语法。您需要使用一个使用
\uu asm{…}
语法的编译器,就像VisualStudio编译器一样。不幸的是,我不认为有可能与CYON做,但是,另一方面,你可能使用VisualStudioC++快件(免费的)来建立来源,或者至少有点进一步。@ JoachimPileborg,我认为你是对的,我将尝试它,并张贴一个答案,当我工作这个out@SomeprogrammerdudeIIRC MSVC支持目前处于测试阶段,可以通过程序的注册表(而不是Windows注册表)启用。请看。@NicHartley是的,现在可以使用MSVC了,而且该公告也是在我发表评论几天后发布的(doh!),所以它已经提供了将近一年了。:)@某个程序员,伙计,是的!我想我会给其他看这个的人做个笔记,这样他们就可以找到答案了。这与CMake或Clion没有直接关系,但与你正在使用的编译器有关。GNU编译器集合(GCC)不像内联汇编程序那样对语言的扩展使用相同的语法。您需要使用一个使用\uu asm{…}
语法的编译器,就像VisualStudio编译器一样。不幸的是,我不认为有可能与CYON做,但是,另一方面,你可能使用VisualStudioC++快件(免费的)来建立来源,或者至少有点进一步。@ JoachimPileborg,我认为你是对的,我将尝试它,并张贴一个答案,当我工作这个out@SomeprogrammerdudeIIRC MSVC支持目前处于测试阶段,可以通过程序的注册表(而不是Windows注册表)启用。请看。@NicHartley是的,现在可以使用MSVC了,而且该公告也是在我发表评论几天后发布的(doh!),所以它已经提供了将近一年了。:)@某个程序员,伙计,是的!我想我会给其他看这个的人留个便条,这样他们就可以找到答案了。