1

CLion有文件模板生成C++类,生成源文件和头文件。在我的项目中,我有具有相同代码部分的处理程序类,我想通过文件模板生成它们。我创建的模板不能这样做:

  1. 为 MyHandlerClass 类设置文件名我想要 my_handler_class.cpp 和 .hpp

  2. 从一个类名我想生成 2 个文件头和源,不知道该怎么做。

  3. 我也想有像 MyClass -> my-class 这样的字符串,找到函数$lowercaseAndDash($NAME)但不知道为什么它不起作用

我有标题模板:

#pragma once
// includes

namespace handlers {

class ${NAME}: public Parent {
  public:
  // methods
};

}

我试图通过设置这样的文件名来解决第一个问题:#set ($FILE_NAME = "test_class.hpp"). 但我不知道将 CamelCase 设置为蛇形,这不起作用。

还可以在文档中找到蛇案例的功能,但它在文件模板中对我不起作用。

4

1 回答 1

0
  1. 从模板更改文件名是不可能的。创建 C++ 类时,设置类名选择文件名编码。当您从模板创建文件时,它会使用您的文件名保存文件。我以这种方式找到了解决方案,输入 file_name (在蛇案例中),并使用 Velocity 为类名创建 CamelCaseName:

    #set( $CamelCaseName = "" )

    #set( $part = "" )

    #foreach($part in $NAME.split("_"))

    #set( $CamelCaseName = "${CamelCaseName}$part.substring(0,1).toUpperCase()$part.substring(1).toLowerCase()" )

    #end

  2. 它不可能像 C++ 类模板那样一键生成 2 个文件。我必须模板,并同时使用它们。

  3. 此功能适用于 liveTemplates,对于 FileTemplate,我使用了速度:#set( $NeededString = $NAME.replaceAll('_', '-') )

    要包含来自 cpp 的头文件,请使用#[[#include]]# "${NAME}.hpp"

于 2019-05-22T11:28:28.313 回答