C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
분야별 포럼
C++빌더
델파이
파이어몽키
C/C++
프리파스칼
파이어버드
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

자유게시판
세상 살아가는 이야기들을 나누는 사랑방입니다.
[28082] Re:RAD 10.3 C++ 코드 리팩토링 안되나요
빌더(TWx) [builder] 4690 읽음    2018-12-06 00:57
정호 님이 쓰신 글 :
: Visual Assist 인수했다고 해서 C++ 인텔리센스 지원되나 확인해 보기 위해
: Rad studio 10.3 설치해봤는데요
:
:
: 비쥬얼 스튜디오에서 지원하는?
: Goto Declaration, Goto Definition, View Call Hierarchy 기능이 안되나요?



답변:


결론 부터 말하면...

rad 10.3의 Intellisense 기능은 베타 수준에도 한참 모자라고, 질문에 언급한 기능은 지원되지 않습니다.

10.3 에선 cquery 라는 오픈소스를 베껴서 배포하고 있는데...

cquery 는 크로스 플렛폼을 지원하는 VSCode 라는 개방형 IDE 에서
Intellisense 기능을 지원하기 위해 MS에서 만든 Language Server Protocol을 구현해 놓은 툴 입니다.

예를 들어서...

rad studio IDE 에서 다음과 같은 JSON RPC 형식을 독립적으로 실행되는 cquery.exe 에 파이프 라인 구조로 보내면
cquery.exe가 C++ 소스 파일들을 파싱해서 트렌스레이션 단위를 인덱스하고 결과를 넘겨 줍니다.

{  "jsonrpc" : "2.0",  "method"  : "textDocument/didOpen",  
	"params"  : {    
		"textDocument": {      
			"uri"        : "file:///C:/Users/mp/Documents/Embarcadero/Studio/Projects/Project1.cpp",      
			"languageId" : "cpp",      "version"    : 3,      "text"       : ""    },    
		"args"         : ["-D", "_DEBUG", "-D", "USEPACKAGES", "-I", "C:\\Users\\mp\\Documents\\Embarcadero\\Studio\\Projects", "-I", 
						  "c:\\program files (x86)\\embarcadero\\studio\\20.0\\include\\windows\\vcl", 
						  "-isystem", "c:\\program files (x86)\\embarcadero\\studio\\20.0\\include", 
						  "-isystem", "c:\\program files (x86)\\embarcadero\\studio\\20.0\\include\\dinkumware64", 
						  "-isystem", "c:\\program files (x86)\\embarcadero\\studio\\20.0\\include\\windows\\crtl", 
						  "-isystem", "c:\\program files (x86)\\embarcadero\\studio\\20.0\\include\\windows\\sdk", 
						  "-isystem", "c:\\program files (x86)\\embarcadero\\studio\\20.0\\include\\windows\\rtl", 
						  "-isystem", "c:\\program files (x86)\\embarcadero\\studio\\20.0\\include\\windows\\vcl", 
						  "-isystem", "C:\\Users\\Public\\Documents\\Embarcadero\\Studio\\20.0\\hpp\\Win32", 
						  "-isystem", "C:\\Users\\Public\\Documents\\Embarcadero\\Studio\\20.0\\hpp\\Win32", 
						  "-fborland-extensions", "-nobuiltininc", "-nostdsysteminc", "-target", "i686-pc-windows-omf", 
						  "-fexceptions", "-fcxx-exceptions", "-x", "c++", "-std=c++17", "-O0", "-tR", "-tM", "-tU", "-tW", 
						  "C:\\Users\\mp\\Documents\\Embarcadero\\Studio\\Projects\\Project1.cpp"]  }}	




VSCode 에서 Intellisense 기능을 지원하기 위해 MS에서 만든 Language Server Protocl (LSP)는
IDE 와 LSP 간의 인터페이스 형태로 JSON RPC 구조를 이용하는데.. 이건 네트웍이 될 수도 있고, 로컬 인터페이스가 될 수도 있습니다.
cquery 의 경우에는 스탠다드 표준 I/O 파이프 라인 구조를 이용 합니다.

IDE 소스 에디터와 다이렉트로 인터페이스 되는 Visual Stduio에서의 Language Service 와 LSP는 구조가 다릅니다.


엠바에서 오픈소스인 cquery 를 베껴서 배포하고 있지만, cquery의 다양한 기능 들을 활용하지 못하고 있지요.
제한적으로 Code Completion 기능 일부 만 간신히 처리하고 있습니다. 그리고 cquery는 Intellisense 기능 지원을 위한
C++ 파서 백엔드 엔진으로 clang (libclang) 툴체인을 사용 합니다.


컴파일러도 32비트만 c++17 지원하고, 32비트와 64비트 오브젝트 포맷, 라이브러리 포맷, 디버깅 포맷도 따로 국밥으로 노는
기형적인 구조를 갖고 있고...

엠바 프로젝트 매니져가 짱구가 아니고서야... 어떻게 컴파일러를 이런 식으로 만드는 건지...



그 아이 [tsirorret]   2018-12-06 08:39 X
빌더님을 아이데라 엠바에서 스카웃되서 가셔야 하는데. 빌더 유저로서 아쉽습니다.
빌더(TWx) [builder]   2018-12-08 15:29 X
C++ 빌더가 정상적인 툴로 거듭 나기위해선 델파이와 완전히 분리 되어야 합니다.
지금과 같이 델파이와 비정상적인 동거를 유지하고 있는 구조로는 외면 받을 게 뻔하지요.
빌더(TWx) [builder]   2018-12-08 15:43 X
델파이로 컴파일된 RTL, VCL 바이너리에 종속되어 있다보니
델파이 컴파일러가 32비트는 OMF, 64비트는 ELF 생성하면 C++ 컴파일러도 델파이에 종속되어 질 수 밖에 없고
델파이 컴파일러에서 Exception 내부 구조가 바뀌면, C++ 컴파일러도 델파이 뒤치닥 거리 하느라 시간 만 낭비하고.
빌더(TWx) [builder]   2018-12-08 15:45 X
델파이와 C++ 빌더는 첫 단추 부터 잘못 끼어진 겁니다.
델파이와 완전히 분리해서 C++ 독자적인 구조로 툴이 바뀌지 않는 이상. 앞날이 뻔하죠.
빌더(TWx) [builder]   2018-12-08 15:48 X
안드로이드 플렛폼에서 ndk 사용할 때도. ndk C++ 헤더파일을 그대로 사용하지 않고
델파이 컴파일러에 의해서 생성된 변환된 헤더에 의존하다 보니 latest ndk 사용에도
제약이 따르고. 이게 뭐하자는 짓인지.

+ -

관련 글 리스트
28079 RAD 10.3 C++ 코드 리팩토링 안되나요 정호 3945 2018/12/02
28082     Re:RAD 10.3 C++ 코드 리팩토링 안되나요 빌더(TWx) 4690 2018/12/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.