【发布时间】:2020-11-19 12:06:48
【问题描述】:
我创建了一个简单的项目来让自己习惯介子,但构建一直失败。
这就是我所做的(设置环境和构建):
set CC=clang
set CC_LD=lld
set CFLAGS="--target x86_64-pc-windows-msvc"
meson build
cd build
ninja
我的meson.build如下:
project('EtaClient', 'c')
src = ['src/main.c', 'src/linkedlist.c']
executable('EtaClient', src)
target = 'x86_64-pc-windows-msvc'
在构建时,我收到以下错误(obj 文件已成功构建,但它们未链接,因此未构建 exe):
LINK : warning LNK4044: unrecognized option '/-subsystem'; ignored
LINK : fatal error LNK1181: cannot open input file 'console.obj'
clang: error: linker command failed with exit code 1181 (use -v to see invocation)
当我查看我的build.ninja 以了解发生了什么时,我发现:
build EtaClient.exe | EtaClient.pdb: c_LINKER EtaClient.exe.p/src_main.c.obj EtaClient.exe.p/src_linkedlist.c.obj
LINK_ARGS = "-Wl,/nologo" "-Wl,/release" "-Wl,/nologo" "-Wl,/DEBUG" "-Wl,/PDB:EtaClient.pdb" "-Wl,--subsystem,console" "-lkernel32" "-luser32" "-lgdi32" "-lwinspool" "-lshell32" "-lole32" "-loleaut32" "-luuid" "-lcomdlg32" "-ladvapi32"
我将"-Wl,--subsystem,console" 替换为"-Wl,/subsystem:console",构建编译成功,但每次修改meson.build 时都必须手动进行此编辑。
谁能告诉我为什么会发生这种情况,以及如何设置介子来生成正确的标志? 提前致谢。
【问题讨论】:
标签: clang ninja meson-build