cquery 编译失败 模块计算机类型与目标计算机类型冲突

如题,用VS2017 和 CMake 编cquery,按照官方的指引在configure的阶段加上了、 -DCMAKE_GENERATOR_PLATFORM=x64 参数,但是在编译的时候还是出了这个错误。 “D:\WorkSpace\cquery\build\ALL_BUILD.vcxproj”(默认目标) (1) -> “D:\WorkSpace\cquery\build\cquery.vcxproj”(默认目标) (3) -> “D:\WorkSpace\cquery\build\third_party\reproc\reproc.vcxproj”(默认目标) (4) -> (Lib 目标) -> reproc.dir\Release\common.obj : fatal error LNK1112: 模块计算机类型“x64”与目标计算机类型“x86”冲突 [D:\WorkSpace\cquery\build\third_party\reproc\reproc.vcxproj]

打开VS工程文件编译的话,错误提示是这样的,

严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK1112 模块计算机类型“x64”与目标计算机类型“x86”冲突 reproc D:\WorkSpace\cquery\build\third_party\reproc\reproc.dir\Release\common.obj 1 错误 LNK1181 无法打开输入文件“third_party\reproc\lib\Release\reproc.lib” cquery D:\WorkSpace\cquery\build\LINK 1

本人只是一个小码工,一直使用emacs,想试试cquery,有没有大神来给看看怎么搞?

windows上没编译过,但感觉你的机器是 x86 ?如果不加那个 x64 的选项呢?

试试ccls?

我是x64啊,有人说是库的版本不对

ccls作者不是说不推荐windows使用

不如就用 MinGW/MSYS2/Cygwin ?

cygwin也不好用啊,我原来就用的cygwin

在vs里面改了一些配置 现在的错误只有这一个,但是不知道怎么改了 2>cquery.dir\Release\siphash.obj : fatal error LNK1112: 模块计算机类型“x64”与目标计算机类型“x86”冲突

https://blog.csdn.net/MR1269427885/article/details/53283257

百度啊,百度啊,百度啊

改好了,之前还是没有完全按照说明来操作,导致configure的时候出了点问题。但是现在编出了二进制文件,也装了lsp-mode和cquery的emacs客户端,但是M-x里面却没有lsp-cquery-enable,这个是什么情况……

当然当然,但是cquery的readme没有更新,我怎么知道做了改名这种神奇的操作?我去访问相关的讨论,也只能是按照关键字搜索的方式。说到底还是因为最容易找到的文档没有更新。 所以我只要运行lsp命令就可以启动cquery是吧?我尝试了一下,cquery服务器似乎没有起来,返回的错误信息是:

Server cquery:PIDxxxx status:starting exited with status exit. Do you want to restart it? (y or n)

重新启动多少次都没有用……我是在cygwin下面运行的emacs,cquery的服务器二进制文件是用VS2017在windows下编出来的。

一般我靠github的watch release功能跟踪更新。这样作者发布新版本的时候github会提醒你。我看lsp-mode是会发布版本的(但是只有3个?不知道跟进的勤不勤)。

-DCMAKE_GENERATOR_PLATFORM=x64,把这个选项去掉试试

我就在windows下用msys2编译的ccls,体验完美

Something you must try it by yourself. I’d considered that Flycheck can’t use on Windows because its author proclaimed that on its official site. But it can work well on my laptop.

Something wrong with my IME so I have you reply you in English…

好吧,我会试试

能不能指点一下MSYS的编译流程?ccls github 的wiki页面,真的组织的不好。 另外,MSYS下编译出的二进制,可以给cygwin里面的程序,或者是VSCode之类的别的平台上面的程序调用吗?你编好了之后是从哪里调用的?

ccls wiki里面写的非常清楚,直接按步执行就好了
编译出来的ccls.exe可以在vscode上用的
至于cygwin我电脑没装不知道,只是cygwin和msys2的理念不同,msys2因为有mingw所以可以和windows的软件非常好的相互调用,而cygwin则无法做到这点,估计cygwin里的程序无法很好使用(windows上还是用msys2省心,msys2的pacman提供的包足够用)

编完了,用msys2装了emacs但是还是不能使用ccls,用eglot启动,直接返回sever died. 我启动的是MSYS2-MSYS shell,emacs也是装在这个环境下的?是不是应该用mingw-64 shell试试?装一个mingw-64版本的eamcs?

应该不是 emacs 的问题,命令行直接执行下 ccls ,先排除编译的二进制是 ok 的。