8 Star 56 Fork 6

scu319hy/EDX 高性能可扩展编辑器

 / 详情

能支持运行多个活动项目吗?

待办的
创建于  
2023-11-26 21:00

最近在写cs架构的程序,
发现这个场景下运行比较麻烦,需要 “对工程右键” - 打开文件位置 - 然后进入内嵌了很多层的目录找到可执行程序 - 然后打开两个终端窗口分别输入命令运行。
vs里面可以设置多启动项目,一次运行多个
输入图片说明
是否可以增加个功能,运行的时候能够依次运行多个目标,并设置先后顺序

另外还有种情况,我是把客户端和服务端都实现在一个程序里,通过传入不同的参数指定是服务端还是客户端。这种情况下貌似只实现上面的运行多目标还不行,大佬有啥想法吗?

总结下上面提到的
1 有没有办法可以一键打开可执行程序路径的,现在都要按上面的步骤操作,特别是远程ssh项目,目录层级特别深。而且有时候编译的时候还会删除编译目录,还得重新进一遍。(如果能实现这个一键打开,下面的两个问题也算有种解决方案,不算特别麻烦了)
2 能否支持类似vs的多启动项目
3 对于指定不同参数就作为不同服务端客户端角色的项目,在开发过程中有啥好的运行测试方式吗?

评论 (12)

洗碗大师 创建了任务

嗯,可以考虑设计启动多个目标的功能。但目前不能做到像VS那样同时调试多个目标。
如果需要同时调试运行两个或多个目标,在EDX里只有分别打开两个进程,单独调试运行。

另一个方案是设计一个快速启动目标的功能,允许用户添加一些快捷启动目标的配置,能快速启动特定的目标

关于定位输出目标的问题,这个我也有考虑过设计个功能,能快速打开控制台/资源管理器/SSH终端到目标所在目录。但一直还没有实现。

3 对于指定不同参数就作为不同服务端客户端角色的项目,在开发过程中有啥好的运行测试方式吗?

关于这个问题,如果仅仅是快速启动,用我前面提到的功能应该可以解决。
但如果还需要同时调试,那我还是建议你把项目的公共部分放到库里。
除了主程序以外,专门搞一个用于测试的可执行程序。分别用于不同的角色逻辑的调试。
像VS那样同时调试多个目标的功能,并不太适用于你这种场景,因为同一个调试器,调试两个目标,很易容搞混。
开两个不同的调试器进程会稍微好一些。

在工程面板加了个虚拟目录,用于展示工程的生成目标。
输入图片说明
可以解决几个问题:

  1. 可以快速定位到目标文件(控制台或资源管理器),解决了你提出的定位目标不方便的问题。
  2. 可以快速复制目标文件
  3. 对于像LLVM这种,有上千个生成目标的项目,菜单已经没法用了。在这里可以实现切换目标的功能。
  4. 未来如果有更多关于目标的操作,可以放到这里。比如:运行测试目标

太强了 :heart_eyes: 迫不及待用用了

还有功能做了一半。这个功能也还要再测试测试,免得发出来BUG太多。
最晚这个周末可以更新一个测试版本出来

另外,关于支持运行多个目标的问题。
我不打算支持像VS那种配置界面在运行单个目标和多个目标之间切换。
这种方式有比较多的局限性,很难灵活配置多个目标之间的关系,参数等等。运行模式很死板,配置和切换起来都不方便。

我目前解决思路主要分几个步骤来实现:

  1. 基于这个生成目标管理来做临时性的运行功能。可以直接选择当前目标运行/调试,运行配置仍使用当前的编译配置,但和当前的活动目标无关(也就是说可以直接运行/调试非活动目标,单个目标重复运行多次)。能比较方便的通过选中目标调整配置(这个已经实现)
  2. 记录运行的历史记录(自动排重),可以比较方便的从历史记录中选择并以之前的运行参数重新执行。
  3. 设计一个高级运行模式,能以一定的顺序,时间间隔运行目标或其它命令。并保存在上面的相关目标历史记录中,可以直接重放或修改历史记录的命令顺序或参数。

基本上,实现了功能1,已经能半自动得满足大多数多目标测试的需求了。你参考一下,看是否能满足你的需求?

:scream: 可以可以

步骤1出乎意料的简单,已经实现了 :smile:
输入图片说明

弄了个CMake变量编辑界面,但对于LLVM这种项目来说,就算有编辑界面,也让人一头雾水。
输入图片说明

而且CMake的缓存变量,不重建所有缓存就会一直存在,删除变量会显得很诡异。

发了个测试版本,你可以先试用一下 :laughing:

非常好用!
不过双击“生成目标”的效果是不是可以改下,现在是会以二进制视图打开可执行文件。
但是大部分时间,对“生成目标”用得最多的操作是启动。
是否应该把双击某个生成目标的效果改为“设为启动目标并启动”

双击/回车比较符合习惯的行为一般就是 打开 或 执行。
打开的好处是和其它文件行为统一,也不用在菜单上单独放打开菜单项了。
编译并执行有快捷键ctrl+f5,调试有快捷键f5。只有打开需要一个比较快捷的入口。

另外,双击是个基本操作,不太适合放复合动作,比如你说的设为启动目标并启动
行为过多,又没有解释的入口(比如菜单上的文字),这样用起来就会让人比较晕。
现在有了直接执行/调试特定目标的能力,设为启动目标很多时候就没那么重要了

确实,操作统一很重要

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
6507262 scu319hy 1705329405
1
https://gitee.com/scu319hy/edx.git
git@gitee.com:scu319hy/edx.git
scu319hy
edx
EDX 高性能可扩展编辑器

搜索帮助

Cb406eda 1850385 E526c682 1850385