컴파일이란, 간단하게 말해 작성한 코드를 실행파일로 만들어주는 작업이다. Geant4 실행파일을 만드려면 메인 프로그램, 소스 파일 그리고 컴파일 스크립트가 필요하다. 메인 프로그램과 소스파일은 나중에 자세히 다루기로 하고 컴파일 스크립트에 대해서 알아보자.
CMake
우리는 컴파일 스크립트로 CMake 라는 툴을 사용할 것이다. CMake 파일을 만드는 작업은 또 다른 공부가 필요하지만 우리에겐 중요하지 않으므로 주어진 CMake 파일을 어떻게 사용하는지에 대해서만 다룰것이다. CMake를 사용하기 위해서는 CMakeLists.txt 라는 파일을 만들어야 한다.
우리의 프로젝트 이름은 편의상 opentutorials_Geant4라고 하자. 컴퓨터에 프로젝트 폴더를 만들고 그 안에 들어가서 CMakeLists.txt 라는 이름의 파일을 만들고 내용을 다음 내용과 같이 채워넣자. 또 프로젝트 폴더 안에 src와 build라는 이름의 폴더를 만들자. 이제 폴더 구조는 다음과 같을 것이다.
opentutorials_Geant4/
- CMakeLists.txt
- build/
- src/
우리는 CMakeLists.txt의 6번째 부터 9번째 줄까지지만 알아두면 된다.
set(useROOT false) set(OT_SOURCE_DIRECTORIES src) set(OT_EXECUTABLES example) set(OT_SCRIPTS vis.mac)
위 4줄은 모두 set([변수] [값]) 의 형식으로 되어 있는데 이는 [변수]를 [값]으로 지정한다는 의미이다.
첫번째 줄의 useROOT라는 변수는 ROOT 라는 다른 패키지를 사용한다는 의미인데 당장 필요하지 않으므로 false로 설정해 두었다.
두번째 변수인 OT_SOURCE_DIRECTORIES는 소스 파일이 위치한 폴더를 의미한다. 현재 src라는 폴더로 설정되어 있으므로 컴파일을 시작할때 src 폴더 안에 있는 .cc와 .hh로 끝나는 모든 파일들을 찾아 실행파일을 만드는데 사용한다. 앞서 프로젝트 폴더안에 src라는 폴더를 만든 이유가 이것 때문이다.
세번째 변수인 OT_EXECUTABLES는 실행파일로 변환할 메인프로그램의 이름을 의미한다. 위와 같이 example로 지정되어 있다면 프로젝트 폴더 안에 example.cc라는 파일을 찾아 실행파일로 변환한다. 만약에 여러개의 실행파일을 만들고 싶다면
set(OT_EXECUTABLES example example2 eample3)
와 같이 띄어쓰기로 이름을 구분하여 적고 example2.cc, example3.cc의 이름을 가진 파일을 만들어 메인프로그램을 작성하면 된다.
네번째 변수인 OT_SCRIPTS는 Geant4를 실행할 때 도움을 주는 스크립트 파일을 의미한다. 나중에 프로젝트 폴더 안의 스크립트 파일을 컴파일이 진행되는 폴더에 그대로 복사해 오는 작업을 해준다.
간단한 프로그램
컴파일을 하기 위해서는 메인 프로그램이 있어야 하므로 다음과 같은 아주 간단한 프로그램을 써보자.
example.cc
#include "globals.hh" int main() { G4cout << "Hello Geant4!" << G4endl; return 0; }
컴파일 및 실행 해보기
컴파일을 하는 방법은 간단하다.
터미널에서 build 폴더로 들어간 후 다음과 같이 친다.
위 명령은 ".." 위치의 CMakeLists.txt 파일을 이용해서 컴파일에 필요한 파일들을 만들어라! 라는 명령이다. 여기서 ".." 이란 바로 전 폴더를 가르키는데 바로 우리의 CMakeLists.txt 파일이 위치한 곳이다. 만들어진 파일들을 이용해서 컴파일을 하는 명령어는 다음과 같다.
이제 build 폴더 안에 example 이라는 실행 파일이 생겼다. 실행파일을 실행하는 방법은 ./[파일] 이다.
Hello Geant4!