目标
虽然在Linux下安装和运行GEANT4程序很便捷,但是windows下的Visual Studio和MAC下的xcode这样的Integrated Development Environment (IDE)为编写程序提供了代码补全、成员方法提示、声明查找、断点调试等功能,可以提高工作效率。
这篇文章将介绍如何在Linux使用IDE编辑和运行调试GEANT4代码,主要涉及两个软件:eclipse
和vs code
,后者严格意义上并不是IDE,但是容易配置出上述功能。
eclipse CDT
eclipse
是跨平台的IDE,默认是用来开发JAVA程序的,CDT是用于C/C++开发的分支。这里的思路是,GEANT4通过cmake
进行代码配置管理,而cmake
支持生成不同IDE的工程文件(例如:visual studio的.sln工程),其中就包括eclipse
的工程文件生成。最后导入即可。
相同的方法还可以用于以下跨平台的IDE(未经测试):
安装软件
在安装之前,确保系统中有JAVA的运行环境(通常系统都会自带)。
方法1: 使用ubuntu官方软件源中的eclipse cdt(版本较旧)
打开synaptic
,搜索eclipse-cdt
,标记安装。或者在控制台中运行:
sudo apt-get install eclipse-cdt
方法2: 在官网下载,解压后即可运行
- 在这个页面下载对应系统(Linux 64-bit)的压缩包;
- 解压到某个路径,例如:
/home/tom/softwares/eclipse
; - 直接运行解压后的可执行文件
eclipse
。 - (可选)在启动脚本(
~/.bashrc
)中,添加该路径到PATH
:export PATH=$PATH:/home/tom/softwares/eclipse
由CMake创建工程
这里以B1为例,首先将它拷贝到某个文件夹,然后创建一个跟它同级的空文件夹(例如,叫做B1_build)。
如果像之前一样把build文件夹放在源代码文件夹里面,会出现Warning
.
├── B1
└── B1_build
在B1_build文件夹里,执行:
cmake -G"Eclipse CDT4 - Unix Makefiles" ../B1
在eclipse中导入项目
打开软件,推荐在控制台输入指令打开:
<where-eclipse-was-extracted>/eclipse
或者eclipse
(如果已经加入PATH
),这样可以保证GEANT4相关的环境变量在打开eclipse
的时候已经设置完毕。File -> Import
菜单栏打开导入窗口;在导入窗口中,选择
General -> Existing Projects into Workspace
,点击Next
新窗口中,点击
Browse
,选择刚才生成的工程文件目录B1_build
- 导入完毕后,左侧的Project Explorer树状结构里的
[Source Directory]
,可以对当前代码进行修改。
使用eclipse编译运行程序
右键Project Explorer树状结构里Build Targets
的[exe]exampleB1
,选择build target
,就会开始编译链接程序。
如果一切正常,Explorer里会多几个Binary
目录,选中其中的exampleB1
,点击菜单中的Run -> Run
就可以运行了。
使用eclipse进行调试
首先,需要安装gdb
(全名:GNU Debugger)
sudo apt-get install gdb
设置断点,然后对上一步生成的可执行程序exampleB1
,点击菜单中的Run -> Debug
就可以进入调试模式。具体使用方法跟其他IDE无异。
Visual Studio Code
这是微软良心出品的开源文本编辑器,加上官方的C/C++插件,可以媲美勉强替代臃肿的Visual Studio IDE。
安装
貌似Ubuntu官方源里面没有它(存疑?),直接到官网下载.deb
包,双击安装即可。
配置插件
打开VS code
之后,点击左侧边栏的extensions
按钮,然后搜索并安装以下两个插件:
C/C++
, from Microsoftcmake
, from twxs
重启VS code
,让插件自动配置完成。
配置GEANT4程序
File -> Open Folder
打开拷贝出来的例子B1
文件夹。这时候会提示很多头文件未找到,例如:
cannot open source file "G4RunManager.hh"
点击报错语句前的“小灯泡”,选择Edit includePath Setting
,这时会打开c_cpp_properties.json
文件,修改其中的"name": "Linux",
部分设定:
...
{
"name": "Linux",
"includePath": [
"/usr/include/c++/7.2.0",
"/usr/include/c++/7.2.0/x86_64-pc-linux-gnu",
"/usr/local/include",
"/usr/lib/clang/5.0.0/include",
"/usr/include",
"${workspaceRoot}",
"${workspaceRoot}/include",
"<path-to-your-geant4-install>/include/Geant4"
],
"defines": [],
...
},
...
其中,我们只添加了includePath
里的这两行:
"${workspaceRoot}/include",
"<path-to-your-geant4-install>/include/Geant4"
此时,应该就不会再报错了。(除非你使用了其他外部头文件,请将其继续添加到includePath
。
编译运行程序
还可以通过VS code
编译运行程序,但是需要继续配置tasks.json
文件,其实跟用命令行编译链接复杂度相似,这里不推荐这么干。