내 프로젝트에 CMake 빌드 시스템을 사용하고 있습니다.gcc/g ++ 대체 정의
getenv("MYPROJDIR")
하지만 난 후에도 지속적인 변수를 만들려하지 않습니다
나는 항상 프로젝트 디렉토리를 알고 내 프로그램의 실행 파일, 내가 내가 환경 변수 및 사용을 설정할 수 있다고 생각합니다 시스템, 나는 수동으로 내 프로그램을 실행하기 전에 매번 임시 변수를 생성하고 싶지 않다.
내 소스가 프로젝트 디렉토리를 알 수 있도록 빌드 시간에 일부 변수를 설정하는 방법이 있으며 실행되는 위치에 관계없이 해당 디렉토리를 기준으로 입력 파일에 액세스 할 수 있습니다.
나는 -D 스위치를 정의하거나 사용할 수 :
add_definitions(-DMYPROJDIR=${PROJECT_SOURCE_DIR})
을하지만 난 사람들이 절대적으로 필요한 경우가 아니라면 매크로를 사용하지 않는 말을 들었습니다.
은 전반적으로 나는이 funtionality 필요
const string defaultinput = MYPROJDIR + "src/someinputdata.dat"
ifstream myfile(defaultinput)
,값. 그리고 당신이 원하는 프로젝트 디렉토리를 놓습니다. 또 다른 가능성은이 경로를 응용 프로그램의 인수로 전달하는 것입니다. – johngull
매크로가 그렇게 나쁜 생각은 아닙니다. 그러나보다 융통성을 원한다면 런타임에 실행 파일의 경로를 찾아 데이터 파일을로드 할 수 있습니다. 즉, 두 디렉토리를 다른 디렉토리로 이동하고 작업을 계속 수행 할 수 있습니다. – Olivier
정말 나쁜 생각입니다. 응용 프로그램을 다른 컴퓨터에 배포하거나 복사 할 때 수행 할 작업은 무엇입니까? 이 새 컴퓨터의 파일에 액세스하는 방법을 어떻게 알 수 있습니까? – SergeyA