2017-02-27 8 views
2

현재 C++ 용 IDE에 CodeLite를 사용하고 있습니다. IDE에서 사용하는 많은 기능이 있으며 인터페이스는 매우 간단합니다.CodeLite 사용하지 않는 전역 컴파일 설정 또는 프로젝트 컴파일 설정

최근 wxWigets에 대한 코드를 3.0에서 3.1로 옮깁니다. 3.1에서 독점적 인 여러 기능이있어 C++ 응용 프로그램을 개발하는 데 가장 도움이 될 것입니다. 가장 주목할만한 것은 wxWindow :: FromDIP 함수입니다.

온라인에서 wxWidgets 소스를 가져 와서 성공적으로 컴파일 할 수있었습니다. 프로젝트 폴더를 마우스 오른쪽 버튼으로 클릭하고 C++ 컴파일러 설정으로 이동하여 컴파일 된 wx-3.1 라이브러리 (/usr/local/include/wx-3.1)의 위치를 ​​포함시켜야합니다.

테스트에서 코드의 일부 부분에서 FromDIP() 함수를 추가했습니다. 코드 완성은 내가 입력 한 것을 집어 낼 수 있었고 FromDIP() 함수를 "볼"수있었습니다.

프로젝트를 빌드 할 때 빌드가 모든 지점에서 실패하여 FromDIP 기능이 실패했습니다. 그것은 인식 할 수 없다고 말하고있었습니다.

그런 다음 전역 컴파일러 설정 (설정 -> 빌드 설정 -> (내 컴파일러 선택) -> 고급)으로 이동 한 다음 wx-3.1 컴파일 된 라이브러리에 포함 경로를 추가했습니다.

다시 빌드가 실패했습니다. 그런 다음 프로젝트 C++ 컴파일러 설정으로 돌아가 프로젝트 설정을 무시하도록 전역 설정을 지정합니다.

다시 빌드가 실패했습니다.

/usr/bin/g++-4.9 -c "/home/phillip/GitHub/Omni-FEM/src/UI/BoundaryDialog/BoundaryDialog.cpp" -g -O0 -fopenmp -std=c++11 -Wall -lglut -lGL -lGLU -I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-3.0 -I/usr/include/wx-3.0 -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL -D__WXGTK__ -pthread -o ./Debug/src_UI_BoundaryDialog_BoundaryDialog.cpp.o -I/home/phillip/GitHub/Omni-FEM/Include -I/usr/local/include/wx-3.1 -I/usr/include/wx-3.0-unofficial -I/usr/include/GL -I/usr/local/include/wx-3.1 

는 불량 -I는/usr/inlcude/WX-3.0 컴파일러 설정이 있습니다 :

나는 출력 있었는지 GCC 보았다. 나는이 컴파일러 설정이 wx-3.1 (나중에 옵션이 나 타난다는 것을 알 수있다.)을 원한다고 생각한다. 물론, CodeLite가 3.0으로 컴파일하려고하면 함수가 존재하지 않기 때문에 빌드가 실패합니다. 나는이 메뉴가있는 곳을 찾기 위해 모든 메뉴를 조사해 왔으며 아무 것도 발견하지 못했습니다.

제 질문은 컴파일러 설정을 변경해야하는 다른 곳이 있습니까? 그렇다면 어디에서 찾을 수 있습니까? 아니면 다른 것을해야합니까? 어딘가에 일부 설정을 덮어 쓰는 것처럼?

답변

2

기본적으로 CodeLite는 wx-config 도구를 사용하여 컴파일러에 필요한 올바른 경로와 정의를 가져옵니다.

당신이해야 할 일은 올바른 wx-config 도구가 사용되었는지 확인하기 만하면됩니다. 이렇게하려면 터미널 wx-config --cflags을 입력하고 터미널에 인쇄중인 플래그를 확인하십시오.

당신은하지 않습니다 (그리고 안)을 수동으로 그냥 컴파일러의 경로를 추가 : Project Settings->Compiler->Compiler options 당신이 $(shell wx-config --cxxflags)을 가지고 Project settings->Linker->Linker options에서 전역 경로에 대한 $(shell wx-config --libs)

이 있는지 확인하십시오 : 당신은 추가하지 말아야 당신이 정말로하고있는 것을 당신이 정말로 안다면. 이러한 경로는 wxWidgets과 관련이없는 작업 영역을 포함하여 모든 작업 영역에 사용됩니다.모든 프로젝트 설정은 작업 영역 수준에서 설정해야합니다 (설정을 통해 이익을 얻을 수있는 다른 사람들과 프로젝트를 공유하는 경우).

여러 wxWidgets 설치가있는 경우 올바른 wx-config이 사용됩니다. 이렇게하려면 당신은 다음 중 하나를 수행 할 수 있습니다 : 당신이 사용하는 /usr/loca/bin/wx-config을 원하는 가정

  • Project Settings->Compiler->Compiler Options 그렇게 PATH=/usr/local/bin:$PATH
  • 를 사용하여 전체 경로 wx-config이 줄을 추가하여 Settings->Environment variables에서 CodeLite의 PATH 환경 변수를 업데이트 이 옵션을 사용하십시오 $(shell /usr/local/bin/wx-config --cxxflags) (Project settings->Linker->Linker Options에서 동일하게하십시오)
+0

답장을 보내 주셔서 감사합니다. 다음은 wx-config --cflags의 출력입니다. -I/usr/local/lib/wx/include/gtk2-unicode-3.1 -I/usr/local/include/wx-3.1 -D_FILE_OFFSET_BITS = 64 -DWXUSINGDLL -D__WXGTK__ -pthread. 불행히도 원래 설정으로 되돌리고, Include Paths의 항목을 삭제하고 $ (shell wx-config)가 C++ 컴파일러 옵션인지 확인한 후에도 오류가 계속 발생합니다. 나는 아직도 얻고있다. -g -O0 -fopenmp -std = C++ 11 -Wall -lglut -lGL -lGLU -I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-3.0 -I /usr/include/wx-3.0 -D_FILE_OFFSET_BITS = 64 -DWXUSINGDLL -D__WXGTK__ – philm

+0

올바른'wx-config'가 사용되었는지 확인하십시오. 'wx-config'를 입력하면 어떻게됩니까? – Eran

+0

을 출력하면'/ usr/local/bin '에'wx-config'가 2 개 있고'/ usr/bin'에 하나가 있습니다 – Eran