clang のコマンドラインオプションを渡す

Index.parse の引数にコマンドラインオプションを配列で渡すことが出来ます。

[main.py]

import sys
import clang.cindex

target = "main.cpp"

command = ["-ID:/boost/boost_1_47_0", "-Wall", "-std=C++0x"]

index = clang.cindex.Index.create()
tree = index.parse(target, args = command)

for value in tree.get_includes():
    print value.source.name

[main.cpp]

#include <tuple>
#include <boost/ref.hpp>

int
main(){

    return 0;
}

[出力]

main.cpp
c:/MinGW/lib/gcc/mingw32/4.5.0/include/c++\tuple
main.cpp
D:/boost/boost_1_47_0\boost/ref.hpp
D:/boost/boost_1_47_0\boost/config.hpp
D:/boost/boost_1_47_0\boost/config.hpp
D:/boost/boost_1_47_0\boost/config.hpp
D:/boost/boost_1_47_0\boost/config.hpp
D:/boost/boost_1_47_0\boost/config/select_stdlib_config.hpp
c:/MinGW/lib/gcc/mingw32/4.5.0/include/c++\cstddef
c:/MinGW/lib/gcc/mingw32/4.5.0/include/c++/mingw32\bits/c++config.h
c:/MinGW/lib/gcc/mingw32/4.5.0/include/c++/mingw32\bits/c++config.h
D:/boost/boost_1_47_0\boost/config/select_stdlib_config.hpp
D:/boost/boost_1_47_0\boost/config/no_tr1/utility.hpp
c:/MinGW/lib/gcc/mingw32/4.5.0/include/c++\utility
c:/MinGW/lib/gcc/mingw32/4.5.0/include/c++\utility
c:/MinGW/lib/gcc/mingw32/4.5.0/include/c++\bits/stl_pair.h
c:/MinGW/lib/gcc/mingw32/4.5.0/include/c++\bits/move.h
c:/MinGW/lib/gcc/mingw32/4.5.0/include/c++\bits/move.h
D:/boost/boost_1_47_0\boost/config.hpp
D:/boost/boost_1_47_0\boost/config.hpp
D:/boost/boost_1_47_0\boost/config.hpp
D:/boost/boost_1_47_0\boost/config/platform/win32.hpp
D:/boost/boost_1_47_0\boost/config.hpp
D:/boost/boost_1_47_0\boost/config/suffix.hpp
D:/boost/boost_1_47_0\boost/ref.hpp
D:/boost/boost_1_47_0\boost/utility/addressof.hpp
D:/boost/boost_1_47_0\boost/ref.hpp
D:/boost/boost_1_47_0\boost/mpl/bool.hpp
D:/boost/boost_1_47_0\boost/mpl/bool_fwd.hpp
D:/boost/boost_1_47_0\boost/mpl/aux_/adl_barrier.hpp
D:/boost/boost_1_47_0\boost/mpl/aux_/config/adl.hpp
D:/boost/boost_1_47_0\boost/mpl/aux_/config/adl.hpp
D:/boost/boost_1_47_0\boost/mpl/aux_/config/adl.hpp
D:/boost/boost_1_47_0\boost/mpl/aux_/config/adl.hpp
D:/boost/boost_1_47_0\boost/mpl/bool.hpp
D:/boost/boost_1_47_0\boost/mpl/integral_c_tag.hpp


各オプションを配列として渡しています。

command = "-ID:/boost/boost_1_47_0 -Wall -std=C++0x"

みたいな感じで渡したらエラーが出ました…。

[Version]

  • clang 3.0(trunk)
  • Python 2.7.2