zoukankan      html  css  js  c++  java
  • Python编写解决Clion解决方案的脚本

    Python编写解决Clion解决方案的脚本

    这段时间宅在家躲避疫情, 仔细思考了一下, 发现即便有了这样的一个教程, 很多朋友依然会因为嫌麻烦或者看不懂而不去结局这个小问题, 于是乎, 我便写了一个Python脚本, 可以自动生成Clino中的CMakeLists.txt和自定义生成*.cpp文件

    首先,了解需要的指令内容

    在编写这个脚本前, 我们首先需要了解一下必要的Python创建文件夹以及创建、读写文件的基本指令, 这里只会列出本文需要的指令内容

    os.mkdir()	# 创建单级目录
    
    open()		# 打开文件, 如果文件不存在, 则创建文件
    			# 这里注意第二个参数不同的含义, 本文使用了"w+"、"w"和"a"
     			# "w+": 以读写的形式打开
     			# "w": 以写的形式打开
           		# "a": 以追加(添加内容)的形式打开
      
    .write()	# 将内容写入文件中
    .close()	# 关闭文件, 虽然一般不会有很大问题, 不过这个最好养成习惯, 每次都写上去
    

    了解完指令内容, 正式进入正题!

    import os
    
    
    def main():
    
        print("
    
    注意!!!本脚本暂不支持直接创建C++项目,使用前提是在Clion中已经创建一个总项目,需要在其中新建子项目或子文件!切记!!!")
    
        num = input("
    1. 新建子项目	2. 在子项目内新建.cpp文件:")
    
        # ############ 这个框里不是必须的 ############ #
    
        # 我写这个主要是为了和手动创建的文件内容完全一致
        usrname = input("请输入您的姓名:")
    
        date = input("请输入日期,格式为(年/月/日):")
    
        # ######################################### #
    
        if num == '1':
    
            # 以下为创建新文件,并在其中写入基本内容
    
            # 将文件目录拷贝过来(绝对路径)
            path = input("请输入文件的目录:")
    
            # 自定义文件夹名称
            son_folder_name = input("请输入新建文件夹名称:")
    
            # 这里创建文件夹
            os.mkdir(f"{path}/{son_folder_name}")
    
            # 创建并打开子目录下的CMakeLists.txt, 在其中写入必要内容
            temp2 = open(f"{path}/{son_folder_name}/CMakeLists.txt", "a")
    
            temp2.write("include_directories(.)
    ")
    
            temp2.close()
    
            # 从这里开始循环,新建多个不同的自定义文件, 可以自定义数量
            amount = int(input("请输入创建文件数量:"))
    
            while amount:
                amount = amount - 1
    
                file_name = input("请输入新建文件名称:")
    
                f = open(f"{path}/{son_folder_name}/{file_name}.cpp", "a")
    
                f.write(
                  f"//
    // Created by {usrname} on {date}.
    //
    
    #include <iostream>
    using namespace std;"
                    "
    
    int main() {
    
    }")
                f.close()
    
                # 向子项目中的CMakeLists.txt输入配置信息
                cmLists = open(f"{path}/{son_folder_name}/CMakeLists.txt", "a")
    
                cmLists.write(f"
    add_executable({file_name} {file_name}.cpp)")
    
                print("已经对子目录内CMakeLists.txt进行更改")
    
            # 向项目根目录中的CMakeLists.txt输入配置信息
            CMLists = open(f"{path}/CMakeLists.txt", "a")
    
            CMLists.write(f"
    ADD_SUBDIRECTORY({son_folder_name})")
    
            CMLists.close()
    
            print("已经对项目总CMakeLists.txt进行更改")
    
    # ###################################################################### #
    
        elif num == '2':    # 单纯在目录下创建.cpp文件(即子项目中的子文件)
    
            # 将文件目录拷贝过来(绝对路径)
            path = input("请输入新建文件的路径:")
    
            amount = int(input("请输入创建文件数量:"))
    
            while amount:
    
                amount = amount - 1
    
                file_name = input("请输入新建文件名称:")
    
                f = open(f"{path}/{file_name}.cpp", "a")
    
                f.write(
                    f"//
    // Created by {usrname} on {date}.
    //
    
    #include <iostream>
    using namespace std;"
                    "
    
    int main() {
    
    }")
    
                f.close()
    
                print(f"已经成功创建{path}/{file_name}.cpp文件")
    
                g = open(f"{path}/CMakeLists.txt", "a")
    
                g.write(f"
    add_executable({file_name} {file_name}.cpp)")
    
    
    if __name__ == "__main__":
        main()
    
    
    

    然后运行试试:

    首先在控制台输入: (注意! 这里需要先cd到脚本文件的位置, 再执行这个操作, 我是因为本身文件就在项目文件夹里, 就可以直接执行)
    在这里插入图片描述

    然后根据提示运行即可

    (当然, Clion内部也可以直接进行新建文件并自动reload的操作, 而且Clion自动会将所有的子文件名直接放到add_exacutable()里面, 相对于我这个更省资源, 这更省空间, 所以新建.cpp这个功能其实并不是那么有用哈哈哈, 本人首次写脚本, 没有考虑需求或者其他的因素, 就当是提升自己, 使用的熟练一些罢了)

    大功告成!!!

  • 相关阅读:
    SD卡image 的文件系统分区太小无法安装更多库(如何扩大SD卡rootfs分区)
    ubuntu下生成dtb文件提示:sopc2dts: command not found
    HPS端用于信息打印窗口的 串口的驱动是什么时候加载的呢?
    给 HPS 增添了一个用FPGA逻辑自定义的外设以后, SD卡 image里面哪些文件要更新?
    为何FPGA 外设 IP 与 HPS IP 之间有个 Avalon-MM Pipeline Bridge IP?
    什么是根文件系统(root filesystem)(未完待续)
    为什么preloader和uboot要放置在RAW A2分区?
    重装系统的时候最好选择?(未完待续)
    Android相关知识点面试
    java知识查漏补缺
  • 原文地址:https://www.cnblogs.com/MYspegaleBlog/p/12620653.html
Copyright © 2011-2022 走看看