2017-10-28 10 views
0

필자는 fedora 컴퓨터의 기본 쉘로 fish 쉘을 설치했습니다. 최근에 nvim으로 전환했고 자동 완성을 위해 deoplete-clang2를 사용하고 있습니다.fish shell에서 compile_commands.json을 사용하는 방법은 무엇입니까?

그러나 헤더 파일의 이름 만 완성합니다. 그래서이 issue을 기반으로 compile_commands.json 파일을 만들려고했습니다.

그러나 명령을 확인하기 위해 clang-check main.c을 실행하면 다음 오류가 발생합니다.

error: unsupported option '--cflags' 
error: unsupported option '--libs' 
warning: (pkg-config: 'linker' input unused [-Wunused-command-line-argument] 
warning: gtk+-3.0): 'linker' input unused [-Wunused-command-line-argument] 
warning: (pkg-config: 'linker' input unused [-Wunused-command-line-argument] 
warning: gtk+-3.0): 'linker' input unused [-Wunused-command-line-argument] 
In file included from main.c:2: 
/usr/include/gtk-3.0/gtk/gtk.h:30:10: fatal error: 'gdk/gdk.h' file not found 
#include <gdk/gdk.h> 
     ^~~~~~~~~~~ 
1 error generated. 
Error while processing /mnt/Work/Learn/Gtk/Official/main.c. 

어떻게 수정해야합니까? 감사합니다

답변

1

이것은 물고기가 아니라 배시를 명시 적으로 실행합니다.

"command" : " /usr/bin/bash echo \"[...] 

bash 대신 "/ usr/bin/fish"를 사용하여 변경할 수 있습니다 (물고기를 설치 한 곳이 아닌 경우 경로를 조정하십시오).

또는 ()$()으로 변경하면 오류가 발생합니다. command1 (command2 arg1 arg2)은 bash에서 유효한 구문이 아니며 command1에 그대로 전달됩니다 (즉, (command2, arg1arg2)을 인수로 받음).

"command" : " /usr/bin/bash echo \"/usr/bin/clang $(pkg-config --cflags gtk+-3.0) -o main main.c $(pkg-config --libs gtk+-3.0)\"" 

변경을하고 그것을 작동합니다. 당신이 물고기를 사용하기로 결정한 경우,


을합니다 ($들 주) (만 줄 바꿈을)하지 않는 물고기, pkg-config는 출력이 공간에 분할 될 것으로 기대하고 있습니다. '링커'입력되지 않는 [-Wunused-명령 줄 인수] 경고 : 에코 : 그래서 당신은 여전히 ​​오류```경고를 발생

(pkg-config --libs gtk+-3.0 | string split " ") 
+0

처럼 string split " "에 파이프를 필요 거라고는/usr/bin/clang $ (pkg-config --cflags gtk + -3.0) -o main main.c $ (pkg-config --libs gtk + -3.0) : '링커'입력을 사용하지 않음 [-Wunused-command-line-argument] 오류 : 컴파일을 처리 할 수 ​​없습니다. ''에 정확히 하나의 컴파일러 작업이 있어야합니다. /mnt/Work/Learn/Gtk/Official/main.c를 처리하는 동안 오류가 발생했습니다. ''' –

+0

이 경우, clang 호출이 잘못되었거나'pkg-config'가 작동하지 않는 것처럼 보입니다. 터미널에서'pkg-config' 호출을 실행하고 출력이 예상 한 것과 일치하는지보십시오. 또한'echo'가 실제로 필요한지 확인해보십시오 - 나는 데비 프릿을 모른다. 따라서 명령을 인쇄하거나 명령을 직접 출력해야하는지 잘 모르겠다. 후자의 경우,'echo'를 제거하십시오. – faho

+0

pkg-config는 onna 터미널에서 완벽하게 작동하며 pkg-config 명령을 수동으로 실행하고 명령의 출력을 대체하면 모든 것이 예상대로 작동합니다. –