flymake를 사용하여 이맥스에서 작동하는 C++ 코드에 대한 구문 강조 표시를 얻으려고합니다. 나는 C++을위한 표준 플라이 메이크 구성을 가지고 있는데, make syntax-check
을 시도하고 실행할 것임을 알고 있지만, 내 빌드 시스템은 Makefile을 사용하지 않는다. ROS 시스템에서 cmake에 대한 랩퍼 인 rosmake을 사용합니다.플라이 메이크 CFGERR 커스텀 g ++ 명령어 사용
내가 Makefile을 제어 할 수 없다는 사실을 알기 위해 나는 flymake website과 this stackoverflow question을 기반으로 맞춤형 플라이 메이크 체커를 추가하려고 시도했다.
나는 g++ -Wall -Wextra -fsyntax-only -Iinclude_dir file_to_check.cpp
명령을 만들었습니다. bash에서 명령을 실행할 때 예상되는 출력을 얻습니다. 구문 오류가 없으면 종료 코드가 0이고 출력이 없습니다. 구문 오류가있는 경우 종료 코드 1과 줄별로 오류가 있습니다. 그러나, 나는 flymake와 함께 이것을 실행하려고 할 때마다 나는 CFGERR을 얻었고 flymake는 사용할 수 없다고 들었다.
오류가 전체 명령을 표시하고 터미널에 입력 한 것과 같은 모든 것이 표시되기 때문에 올바른 명령이 실행되고 있음을 확신합니다. 문제가 무엇인지 알기 위해 로깅 수준을 최대 3까지 올렸습니다. 로그 중간에 오류가 있습니다.
file /home/rhololkeolke/ros_workspace/team-hku-drc/robot_code/state_trigger/src/Broadcaster.cpp, init=flymake-cc-init [3 times]
create-temp-inplace: file=/home/rhololkeolke/ros_workspace/team-hku-drc/robot_code/state_trigger/src/Broadcaster.cpp temp=/home/rhololkeolke/ros_workspace/team-hku-drc/robot_code/state_trigger/src/Broadcaster_flymake.cpp
saved buffer Broadcaster.cpp in file /home/rhololkeolke/ros_workspace/team-hku-drc/robot_code/state_trigger/src/Broadcaster_flymake.cpp
started process 14517, command=(g++ -Wall -Wextra -fsyntax-only -std=c++0x -I/home/rhololkeolke/ros_workspace/team-hku-drc/robot_code/state_trigger/include -I/home/rhololkeolke/ros_workspace/team-hku-drc/robot_code/state_trigger/msg_gen/cpp/include -I/home/rhololkeolke/ros_workspace/team-hku-drc/robot_code/state_trigger/srv_gen/cpp/include -I/opt/ros/fuerte/include
Broadcaster_flymake.cpp), dir=/home/rhololkeolke/ros_workspace/team-hku-drc/robot_code/state_trigger/src/
received 40 byte(s) of output from process 14517
file /home/rhololkeolke/ros_workspace/team-hku-drc/robot_code/state_trigger/src/Broadcaster.cpp, init=flymake-cc-init
parsed 'g++: error: : No such file or directory', no line-err-info
file /home/rhololkeolke/ros_workspace/team-hku-drc/robot_code/state_trigger/src/Broadcaster.cpp, init=flymake-cc-init
process 14517 exited with code 1
cleaning up using flymake-simple-cleanup
deleted file /home/rhololkeolke/ros_workspace/team-hku-drc/robot_code/state_trigger/src/Broadcaster_flymake.cpp
Broadcaster.cpp: 0 error(s), 0 warning(s), 0 info in 0.07 second(s)
switched OFF Flymake mode for buffer Broadcaster.cpp due to fatal status CFGERR, warning Configuration error has occured while running (g++ -Wall -Wextra -fsyntax-only -std=c++0x -I/home/rhololkeolke/ros_workspace/team-hku-drc/robot_code/state_trigger/include -I/home/rhololkeolke/ros_workspace/team-hku-drc/robot_code/state_trigger/msg_gen/cpp/include -I/home/rhololkeolke/ros_workspace/team-hku-drc/robot_code/state_trigger/srv_gen/cpp/include -I/opt/ros/fuerte/include
Broadcaster_flymake.cpp)
주 오류는 parsed 'g++: error: : No such file or directory', no line-err-info
인 것으로 보입니다. 나는 그것이 Broadcaster_flymake.cpp가 결코 생성되지 않았기 때문에 그것이 있을지도 모른다라고 생각했다. 그러나 나는 그것을 점검했다. 그리고 그것은 일하는 것처럼 보인다. 구문 오류가 있는지 여부에 관계없이 이러한 오류가 발생합니다. 왜 Bash에 명령을 복사하고 붙여 넣을 때 파일을 찾을 수 없는지 완벽하게 이해할 수 없습니다. 또한 버퍼에서 (shell-command "g++")
을 시도하여 이맥스가 g ++ 바이너리를 찾고 있는지 확인했습니다.
flymake가 명령을 실행하는 데 실패한 이유가 있다면 알려주십시오. 고맙습니다.