在 Apache Velocity 模板语言中获取文件目录
Get file directory in Apache Velocity Template Language
CLion 使用 Apache 的 Velocity 模板语言 (VTL( 为 C++ 和 C 文件创建模板。 在CLion的帮助下(https://www.jetbrains.com/help/clion/file-template-variables.html(,列出了一堆可以使用的变量。
但是,我想知道是否可以将创建C++文件的目录用作我的一个模板中的变量? 我问这个是因为我喜欢以java/包类型的方式构建我的源文件。
"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的象征,他们的网站将其列为"表示重构期间创建的命名空间块的开始/结束"。
我很高兴地宣布,这已在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
和测试2.hpp:
//
// Created by user on 4/15/19.
//
#ifndef CPP_TEST2_HPP
#define CPP_TEST2_HPP
class test2
{
};
#endif //CPP_TEST2_HPP
- 获取文件数据预处理器宏
- C++ 读取整个文件目录
- 如何在Windows内核中获取文件大小
- 从 C 中的变量获取文件的路径,C++
- 获取每个目录或子目录中第一个文件的路径
- 如何使用 C/C++ 和 system() 系统调用以外的其他方法在 Linux 中获取文件功能?
- 在 Apache Velocity 模板语言中获取文件目录
- 如何从文件句柄获取包含目录的句柄
- 通过文件资源管理器获取文件夹目录
- Qt - 为什么无法使用 QFile 读取文件,其中包含从 FileDialog 获取的目录
- 如何通过键入文件名来获取文件的目录。(C++)
- GetPrivateprofilestring 不会获取当前目录中的 ini 文件
- 如何获取 c++ 文件的当前工作目录
- 正在获取当前目录中的所有文件
- 使用递归获取某个目录中的所有文件
- C++获取程序文件目录,附加额外路径并执行
- C++获取导致目录更改通知的文件的文件名
- 如何在 Linux 中获取当前目录下的文件信息
- 从c++文件中获取父目录
- 获取.exe目录中列出的所有文件,不知道位置