获取Apache Velocity Template Language中的文件目录

问题描述 投票:2回答:1

CLion使用Apache的Velocity Template Language(VTL)为C ++和C文件创建模板。在CLion的帮助(https://www.jetbrains.com/help/clion/file-template-variables.html)中列出了一堆可以使用的变量。

我想知道,如果可以在我的一个模板中使用创建C ++文件的目录作为变量吗?我问这个是因为我喜欢以java / package类型的方式构建我的源文件。

“Utils”目录中的所有文件都是“Utils”命名空间的一部分,“Ui”目录中的所有包都是“Ui”命名空间等的一部分......

所以我想知道我是否有办法获取文件的父目录,以便我可以在模板中使用它? (也许通过在我的CMakeLists.txt中设置一个变量?)

这是我想要实现的一个例子

#parse("C File Header.h")
#[[#ifndef]]# ${INCLUDE_GUARD}
#[[#define]]# ${INCLUDE_GUARD}

${NAMESPACES_OPEN}
namespace ${CWD}

class ${NAME}
{

};

${NAMESPACES_CLOSE}

#[[#endif]]# //${INCLUDE_GUARD}

其中${CWD}表示文件所在的文件夹。

${NAMESPACE_OPEN}${NAMESPACE_CLOSE}指令似乎纯粹是CLion的象征,他们的网站将其列为“表示在重构期间创建的命名空间块的开始/结束”。

c++ apache velocity clion vtl
1个回答
0
投票

我很高兴地宣布这已在CLion 2019.1修复

通过去File - > Settings - > Editor - > Code Style - > C/C++ - > Naming Conventions用户可以使用一些额外的变量${PROJECT_REL_PATH}${FILE_NAME}${EXT}

使用时,请务必检查File - > Settings - > Editor - > File and Code Templates。您之前定义的包含保护可以使用${INCLUDE_GUARD}变量在此处访问。

这是一个示例项目和配置来说明:

File - > Settings - > Editor - > File and Code Templates

#parse("C File Header.h")
#[[#ifndef]]# ${INCLUDE_GUARD}
#[[#define]]# ${INCLUDE_GUARD}

${NAMESPACES_OPEN}

class ${NAME} {

};

${NAMESPACES_CLOSE}

#[[#endif]]# //${INCLUDE_GUARD}

File - > Settings - > Editor - > Code Style - > C/C++ - > Naming Conventions

${PROJECT_REL_PATH}_${FILE_NAME}_${EXT}

项目结构:

Project
├── CMakeLists.txt
├── cpp
│   ├── Test2.cpp
│   └── Test2.hpp
├── main.cpp
├── Test.cpp
└── Test.hpp

这给出了一个“Test.hpp”,如下所示:

//
// Created by user on 4/15/19.
//

#ifndef _TEST_HPP
#define _TEST_HPP


class test
{

};


#endif //_TEST_HPP

和一个Test2.hpp:

//
// Created by user on 4/15/19.
//

#ifndef CPP_TEST2_HPP
#define CPP_TEST2_HPP


class test2
{

};


#endif //CPP_TEST2_HPP
© www.soinside.com 2019 - 2024. All rights reserved.