글쓴이: 익명 사용자 / 작성시간: 화, 2022/10/04 - 3:06오후
현재 *.h 파일과 *.lib 파일로 제공되는 c++ 정적라이브러리를 사용중입니다
그리고 헤더파일에 있는 클래스의 이름, 멤버변수, 멤버함수 목록을 추출하려고 하는데
이 라이브러리 소스가 없어서 수정을 할 수가 없는 상황입니다
오직 헤더파일만 이용해서 클래스들의 멤버 정보를 추출해야하는데
헤더파일을 읽은후 정규표현식으로 클래스를 파싱하는 방법으로 해야할까요?
아니면 다른 좋은 방법이 있다면 조언좀부탁드립니다 ㅠㅠ
ctags를 쓸 수 있는 환경이라면 ctags를 써
ctags를 쓸 수 있는 환경이라면 ctags를 써 보세요.
ctags -V --c-kinds=+p xxx.hpp
라면 tags 텍스트 파일에 웬만한 클래스 멤버 함수 정보 다 보일 겁니다.
그 다음에 sed, awk 등으로 파싱한다면 원하시는 게 대부분 가능할 것 같네요.
감사합니다
ctags 는 써본적이 없는데
이런 상황에 활용할수 있나보군요
답변 감사합니다~!!
정보 추출해서 무얼 하시려는지 궁금합니다!
doxygen 으로 xml 출력해서 추출 방법도 가능 할겁니다.
정보 추출해서 무얼 하시려는지 궁금합니다!
c++ ORM 이 목적입니다
클래스 멤버변수들을 추출해서 create table 필드1 타입, 필드2 타입,... 쿼리를 자동으로 만들어
각 클래스마다 테이블을 자동으로 생성하여 데이터를 저장하기 위해서입니다
사용중인 라이브러리가 오픈소스가 아니라서 소스수정이 불가능하고
*.h 헤더파일에 있는 클래스 선언부의 정보밖에 없는 상황입니다..
c++ orm 라이브러리나 c++ 리플렉션 라이브러리들을 찾아보니 소스를 수정해야 사용이 가능한것같더라구요
그래서 다른 방법을 고민하다가
헤더파일의 클래스 선언부분을 파싱하여 클래스 멤버 목록을 추출하도록 하면 리플렉션 비슷한 기능을 만들 수 있을것같아서
문의 드렸습니다
댓글 달기