C++ 在构建新迭代时终止上一个迭代
TL;DR:如何让CLion在构建新版本之前删除任何正在运行的代码版本 我已经开始和克利永玩C++了。我注意到,在再次编译之前,我经常忘记停止上一次迭代,这导致了“权限被拒绝”错误——当我第一次遇到这个问题时,我花了将近半个小时摆弄权限设置,才意识到这是因为旧版本仍在运行,因此无法用新的可执行文件替换 据我所知,如果不嵌入批处理(因为我在Windows上)脚本,在CMake中就无法做到这一点。我想避免这种情况,因为这会给…带来很多不必要的复杂性。。。没有那么多报酬C++ 在构建新迭代时终止上一个迭代,c++,cmake,clion,C++,Cmake,Clion,TL;DR:如何让CLion在构建新版本之前删除任何正在运行的代码版本 我已经开始和克利永玩C++了。我注意到,在再次编译之前,我经常忘记停止上一次迭代,这导致了“权限被拒绝”错误——当我第一次遇到这个问题时,我花了将近半个小时摆弄权限设置,才意识到这是因为旧版本仍在运行,因此无法用新的可执行文件替换 据我所知,如果不嵌入批处理(因为我在Windows上)脚本,在CMake中就无法做到这一点。我想避免这种情况,因为这会给…带来很多不必要的复杂性。。。没有那么多报酬 简而言之,在CLion或CMa
简而言之,在CLion或CMake中是否有一个选项可以在运行新的迭代时停止上一个迭代?据我所知,这在默认情况下是不可能的。 我找到的一个解决方案是创建包含以下内容的批处理文件:
@echo on
tasklist /FI "IMAGENAME eq %1" 2>NUL |find /I "%1">NUL
if "%ERRORLEVEL%"=="0" taskkill /F /im %1
(第二行检查进程是否正在运行-在此处找到:)
并编辑构建配置,使CLion在每次构建之前调用批处理文件并将processname传递给它
这就是它的工作原理:
$ProjectName$.exe
写入“参数:”字段现在,它应该在每次构建之前尝试终止正在运行的进程。据我所知,这在默认情况下是不可能的。 我找到的一个解决方案是创建包含以下内容的批处理文件:
@echo on
tasklist /FI "IMAGENAME eq %1" 2>NUL |find /I "%1">NUL
if "%ERRORLEVEL%"=="0" taskkill /F /im %1
(第二行检查进程是否正在运行-在此处找到:)
并编辑构建配置,使CLion在每次构建之前调用批处理文件并将processname传递给它
这就是它的工作原理:
$ProjectName$.exe
写入“参数:”字段现在,它应该在每次构建之前尝试终止正在运行的进程。是的。只要按ctrl+F2或goto
Run>Stop
即可终止上一次迭代,以防它继续运行
或者,可以设置为仅运行单个实例。这样,在运行新实例之前,将始终终止以前的实例。要启用此功能,请转到
运行|编辑配置
并选择仅单个实例
是。只要按ctrl+F2或gotoRun>Stop
即可终止上一次迭代,以防它继续运行
或者,可以设置为仅运行单个实例。这样,在运行新实例之前,将始终终止以前的实例。要启用此功能,请转到
Run | Edit Configurations
并选择Single Instance Only
答案的最后一半实际上回答了我的问题,即如何在启动另一个实例之前自动终止上一个实例。谢谢@很高兴听到你这么说。我仍然保留答案中的第一部分,以防有人想手动终止它(通常在关闭控制台而不停止调试器的情况下会很有用,而且进程不会死)。你的答案的后半部分实际上回答了我的问题,这就是如何在启动另一个实例之前自动终止上一个实例。谢谢@很高兴听到你这么说。我仍然保留答案中的第一部分,以防有人想要手动终止它(通常在关闭控制台而不停止调试器并且进程不会死掉的情况下很有用)。