gpt4 book ai didi

python - libclang:添加编译器系统包含路径(Windows 中的 Python)

转载 作者:太空狗 更新时间:2023-10-29 21:59:24 27 4
gpt4 key购买 nike

关注此questionAndrew's建议,我正在尝试让 liblang 添加编译器系统包含路径(在 Windows 中)以便我的 Python 代码

import clang.cindex

def parse_decl(node):
reference_node = node.get_definition()
if node.kind.is_declaration():
print(node.kind, node.kind.name,
node.location.line, ',', node.location.column,
reference_node.displayname)

for ch in node.get_children():
parse_decl(ch)

# configure path
clang.cindex.Config.set_library_file('C:/Program Files (x86)/LLVM/bin/libclang.dll')

index = clang.cindex.Index.create()
trans_unit = index.parse(r'C:\path\to\sourcefile\test.cpp', args=['-std=c++11'])

parse_decl(trans_unit.cursor)

像这样完全解析C++源文件

/* test.cpp
*/
#include <iostream>
#include <vector>
#include <fstream>
#include <cmath>
#include <algorithm>
#include <iomanip>

using namespace std;

void readfunction(vector<double>& numbers, ifstream& myfile)
{

double number;
while (myfile >> number) {
numbers.push_back(number);}

}

double meanfunction(vector<double>& numbers)
{

double total=0;
vector<double>::const_iterator i;
for (i=numbers.begin(); i!=numbers.end(); ++i) {
total +=*i; }
return total/numbers.size();

}

现在,如果没有正确设置编译器系统包含路径(使用 Windows),我会得到以下输出:

CursorKind.USING_DIRECTIVE USING_DIRECTIVE 8 , 17 std
CursorKind.VAR_DECL VAR_DECL 10 , 6 readfunction

Process finished with exit code 0

<Diagnostic severity 4, location <SourceLocation file 'test.cpp', line 3, column 10>, spelling "'iostream' file not found">

不幸的是,我无法理解这个 approach(Python 和 Clang 中的新功能)或者如何实现这个 solution在我的 Python 代码中。

我也试过ccsyspath ,但我不具备“针对 windows 进行调整”的技能。

有人知道如何解决这个问题吗?

最佳答案

在 Windows 中,要向路径添加内容,您必须执行以下操作:

  1. 系统属性
  2. 高级
  3. 环境变量
  4. 从表中选择“路径”
  5. 第一个“编辑”按钮
  6. 添加您要添加​​到路径的可执行文件的位置

希望这对您有所帮助!


(如果我误解了你的问题,请告诉我,我对堆栈溢出还是个新手。谢谢!)

关于python - libclang:添加编译器系统包含路径(Windows 中的 Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37113241/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com