2013-02-13 3 views
6

나는 ~/.profile 스크립트에서 설정 한 $(CXX)으로 C++ 컴파일러를 호출하는 간단한 makefile을 가지고 있습니다. Netbeans는 정교한 툴 체인 관리자를 보유하고있는 것으로 보이지만, 은 무엇이든지간에 c++으로 해결되는 것으로 보입니다.C++ 메이크 파일의 Netbeans 환경 변수

어떻게 $CXX을 올바르게 설정할 수 있습니까? 아니면 내 메이크 파일에서 감지 할 수있는 Netbeans에 의해 설정된 다른 변수가 있습니까? (yuck)

편집 : 네비게이터에서 메이크 파일을 마우스 오른쪽 버튼으로 클릭하면 환경을 지정할 수 있지만 입력 한 줄만 입력 할 수있는 것처럼 보입니다. CXX=/usr/local/bin/g++을 지정하면 문제가 해결되지만 최적은 아닙니다.

+0

파일마다 컴파일 옵션을 지정할 수 있으므로 파일을 마우스 오른쪽 버튼으로 클릭하면 'c'파일 또는 'C++'파일로 지정할 수 있습니다 ... 컴파일러를 선택하려면 '툴킷'을 만들어야합니다 . – Mikhail

+0

@Mikhail 이것은 맞춤 메이크 파일이므로 Netbeans은 파일마다 아무 것도 할 수 없습니다. – Potatoswatter

+0

아마도 메이크 파일을 바꿀 수 있습니까? 또한 makefile에 대한 사용자 정의 호출을 수행하지만 올바른 도구 세트를 선택해야한다고 생각합니다. – Mikhail

답변

3

NetBeans에서 C++로 작업 할 때 주로하는 일을 설명합니다. 처음에는 각 프로젝트에 대해 다음과 같은 간단한 makefile을 만듭니다.

MAIN = <my main target> 
CFLAGS = -g -std=c++0x 

include ${MAKELIBHOME}/MINGW32.inc 
include ${MAKELIBHOME}/WINDOWS.inc 

build: ${MAIN} 

clean:; rm -fr <files to remove> 

환경 변수 MAKELIBHOME은 NetBeans 외부에서 설정됩니다. 가 메이크업에 대한 파일 포함의 디렉토리 $ {MAKELIBHOME}이 번호를 포함, 예를 들어 파일 MINGW32.inc은 다음과 같습니다

CC = g++ 

CFLAGS += -W -DLITTLE_ENDIAN=1 
LDLIBS += -lws2_32 

.SUFFIXES: .o .c .cpp 

.c:  ;${CC} ${CFLAGS} ${LDFLAGS} $< -o latest ${LDLIBS} 
.cpp: ;${CC} ${CFLAGS} ${LDFLAGS} $< -o latest ${LDLIBS} 

.c.o: ;${CC} ${CFLAGS} -c $< 
.cpp.o: ;${CC} ${CFLAGS} -c $< 

이 INC-파일은 모든 넷빈즈 프로젝트에 대해 동일합니다. 여기에는 절대 경로가 없으므로 make는 PATH 변수를 사용하여 GCC 도구 세트를 찾습니다. 물론 절대 경로를 사용하여 원하는 도구 세트를 선택할 수 있습니다 (또는 다른 inc 파일 포함 -이 방법을 선호합니다).

내 모든 Windows 컴퓨터에서 작동하지만 Linux 구성은 매우 유사합니다. 모든 주요 메이크 파일에 다른 inc 파일 세트를 포함하면됩니다. 또한이 설정을 사용하면 명령 줄에서 make를 호출 할 수 있습니다. 나는 그것이 도움이되기를 바랍니다

, ~ AY

+0

흠, 게시 할 때 이것을 놓쳤습니다. . NetBeans를 더 이상 사용하지 않지만 내 질문에 "환경 변수'MAKELIBHOME'이 NetBeans 외부에서 설정됩니다." * NetBeans에서 외부 환경 변수를 어떻게 볼 수 있습니까? 내가 Unix/OS X에 있기 때문에, 번역이 끝나지 않았을 수도있다. – Potatoswatter

+0

@Potatoswatter -'make '는 Windows와 Unix 모두에서 환경 변수를 참조 할 수 있으며 NetBeans 외부에서 발생합니다. BTW, 나는 항상 NetBeans 프로젝트 유형 "C/C++ Project with Existing Sources"를 사용하여, 내'Makefile'이 완전히 내 통제하에 있습니다. – HEKTO

+0

질문으로,'.profile'은'$ CXX'를 설정했지만 변수는 makefile에서 사용할 수 없습니다. 'make '를 호출하는 프로그램은 환경을 생성하는 책임이있다. 사실 변수는 기본적으로 전파된다. – Potatoswatter

2

이 오래된 게시물입니다. 그러나 나는 최근에 같은 문제를 발견하고 @ HEKTO의 대답에 기초한 대안을 발견했다.

필자는 대형 스파 스 매트릭스 시스템을 해결하기 위해 라이브러리 인 PETSc를 사용합니다. 빌드 시스템은 두 환경 변수에 의존하는 makefile에 "include"를 사용하도록 요구합니다 : PETSC_DIR과 PETSC_ARCH는 여러분의 환경에서 설정되어야합니다 ... 아니면 make 명령에 옵션으로 전달할 수 있습니다 !! 이것이 내가 한 일이다.

내가 넷빈즈에 의해 생성 된 메이크 파일을 가져다가 맨 끝에 내 포함 추가 :이 PETSC_DIR의 정의에 따라 달라

include ${PETSC_DIR}/conf/variables 

공지 사항. 또한 여기에는 PETSC_ARCH가 대량으로 사용됩니다.

이제는 NetBeans에서 다음 변수를 전달하도록 구성합니다. 도구 -> 옵션 : "프로젝트 옵션"탭에서 "옵션 만들기"텍스트 상자를 채 웁니다. PETSC_DIR =/path/to/petsc PETSC_ARCH = some-arch

또한 이제 환경 옵션 및 프로젝트 옵션에서 $ {PETSC_DIR}/conf/variables에 정의 된 다른 환경 변수를 사용할 수 있습니다.예를 들어, 내 포함 파일의 경우 : "C 컴파일러"에서 "디렉터리 포함"$ {PETSC_DIR}/include

그리고 "링커" , "Libraries": $ {PETSC_LIB} (위의 include 파일에 정의되어 있음).

이제 NetBeans 내에서 프로젝트를 만들고 실행할 수 있습니다. PETSc 버전이 변경된 경우 make가 전달한 변수의 정의 만 변경하면 나머지는 모두 해결됩니다.

누군가에게 도움이되기를 바랍니다. 그것은 확실히 나를 위해 일했습니다. 그리고 멋진 부분은 제 코드를 다른 사람들에게 줄 수 있고, 평소와 같이 "make"를 사용하여 커맨드 라인에서 컴파일하고 (NetBeans없이) 위의 환경 변수를 정의 할 수 있다는 것입니다. 컴파일에는 하드 코딩 된 경로가 없습니다.

1

Netbeans이 bash에서 환경 변수를 가져 오지 않은 Linux에서 나는 매우 유사한 문제를 가지고있었습니다.

해결책 : bash에서 netbeans을 시작하십시오.

Mac에 해당하는 내용이 확실하지 않지만 아이디어가 간단합니다. 올바른 환경 변수가 이미 설정된 터미널에서 Netbeans을 시작하십시오.