『壹』 C和C++語言有哪些主流開發工具
AppCode :構建與JetBrains』 IntelliJ IDEA 平台上的用於Objective-C,C,C++,Java和Java開發的集成開發環境
CLion:來自JetBrains的跨平台的C/C++的集成開發環境
Code::Blocks :免費C,C++和Fortran的集成開發環境
CodeLite :另一個跨平台的免費的C/C++集成開發環境
Dev-C++:可移植的C/C++/C++11集成開發環境
Eclipse CDT:基於Eclipse平台的功能齊全的C和C++集成開發環境
Geany :輕量級的快速,跨平台的集成開發環境。
IBM VisualAge :來自IBM的家庭計算機集成開發環境。
Irony-mode:由libclang驅動的用於Emacs的C/C++微模式
KDevelop:免費開源集成開發環境
Microsoft Visual Studio :來自微軟的集成開發環境
NetBeans :主要用於Java開發的的集成開發環境,也支持其他語言,尤其是PHP,C/C++和HTML5。
Qt Creator:跨平台的C++,Javascript和QML集成開發環境,也是Qt SDK的一部分。
rtags:C/C++的客戶端伺服器索引,用於 跟基於clang的emacs的集成
Xcode :由蘋果公司開發
YouCompleteMe:一個用於Vim的根據你敲的代碼快速模糊搜索並進行代碼補全的引擎。
構建系統
Bear :用於為clang工具生成編譯資料庫的工具
Biicode:基於文件的簡單依賴管理器。
CMake :跨平台的免費開源軟體用於管理軟體使用獨立編譯的方法進行構建的過程。
CPM:基於CMake和Git的C++包管理器
FASTBuild:高性能,開源的構建系統,支持高度可擴展性的編譯,緩沖和網路分布。
Ninja :專注於速度的小型構建系統
Scons :使用python scipt 配置的軟體構建工具
tundra :高性能的代碼構建系統,甚至對於非常大型的軟體項目,也能提供最好的增量構建次數。
tup:基於文件的構建系統,用於後台監控變化的文件。
靜態代碼分析
提高質量,減少瑕疵的代碼分析工具列表
Cppcheck :靜態C/C++代碼分析工具
include-what-you-use :使用clang進行代碼分析的工具,可以#include在C和C++文件中。
OCLint :用於C,C++和Objective-C的靜態源代碼分析工具,用於提高質量,減少瑕疵。
Clang Static Analyzer:查找C,C++和Objective-C程序bug的源代碼分析工具
『貳』 python 中的lib目錄一般 存放哪些文件呢
Lib文件夾里放的是python的標准庫,例如json、os、urllib、urllib2等等很多很多常用的庫,Lib文件夾裡面還有個site-packages文件夾,用來放擴充庫的
『叄』 如何自動生成lua綁定C++的代碼
1. 這個py文件就是LLVM中拿出來的,是libclang的一個python綁定,利用的python的ffi機制(ctypes)寫的,你可以在LLVM源碼里找到它。
2. 這應該所有c++編譯器的前端都有這個功能,比如這個簡單點的robertoraggi/cplusplus · GitHub,atomic engine就拿它寫了個綁定生成工具。
3. luabind,swig等等輪子好像挺多的,符合自己的需求就行。
『肆』 如何在Windows下給Vim安裝YouCompleteMe
安裝YCM有幾個基本的要求:
包含Python支持的Vim版本。
LLVM/Clang,具體地說其實是libclang.dll這一個文件。
Haroogan預編譯好的YCM庫,主要是指ycm_core.pyd這個文件。
檢查Vim的Python支持的辦法是在cmd中運行python --version看看出來的Python前面是否有加號,或者在Vim中執行:echo has('python')。不過相信會看這篇文章的多半是從官網下的gvim74,很不幸地這個版本並不支持Python。
不過Haroogan同學很貼心地給出了全套解決方案,上面的三個基本要求他都提供了預編譯好的版本:
帶Python和其它一大票語言支持的Vim
LLVM for Windows
YCM
需要提醒的是,不知道什麼原因,上面的bitbucket.org網站中正文里的鏈接都掛了,不過還好下載鏈接可以在左側的Downloads里找到。
『伍』 Python安裝PyQt5時遇到這個問題該怎麼解決
linux系統下Qt5編譯好的程序在未安裝Qt的系統下運行會報以下錯誤:
This application failed to start because it could not find or load the Qt platform plugin "xcb".
Reinstalling the application may fix this problem.
出現這個錯誤,主要是因為qt5為了在多平台下更方便移植,使用了一種新的技術-----platform abstraction system (QPA),而它中的庫又依賴於Qt5中的一個庫文件libQt5DBus.so.5,所以,只要打包時只要加上這個文件就可以了。
linux下qt5程序打包步驟如下
1、把以下7個庫文件放到/usr/lib目錄下
libQt5Widgets.so.5
libQt5Gui.so.5
libQt5Core.so.5
libicui18n.so.51
libicuuc.so.51
libicudata.so.51
libQt5DBus.so.5
2、拷貝Qt5安裝目錄中的platforms目錄,使它和你的Qt程序同級目錄
現在你可以雙擊你的程序運行了呵呵
『陸』 cygwin 下使用很多命令都沒有反應,的確是安裝了,比如clang python3 還有pgrep等等 輸入命令沒反應
直接cd到命令所在目錄能執行么?
如果cd到相應目錄可以執行,那麼設置下path參數即可。
『柒』 llvm編譯makefile152錯誤
llvm編譯makefile152錯誤解決辦法如下
由於該文件不是很必須的文件,所以可以嘗試touch該文件
嘗試安裝libclang-common-9-dev。
『捌』 如何使用的libclang Python綁定跳過遍歷AST的子樹
的只是特定的節點。 它只是服務的宗旨,如何讓剛特定節點 example.cpp文件:int i;
char var[10];
double tmp;
int add (int a, int b)
{
int r;
r=a+b;
return (r);
}
例如Python代碼:import sys
from clang.cindex import *
index = Index.create()
tu = index.parse('example.cpp')
root_node = tu.cursor
#for further working with children nodes i tend to save them in a seperate list
#wanted nodes in extra list "result"
wanted_nodes = ['var', 'tmp']
result = []
node_list= []
for i in node.get_children():
node_list.append(i)
for i in node_list:
if i.spelling in wanted_nodes:
result.append(i)
#now result contains the two nodes "var" and "add"
#print the name
for i in result:
print i.spelling
#print the type
for i in result:
print i.type.kind
######OUTPUT#######
>>> var
>>> add
>>> TypeKind.CONSTANTARRAY
>>> TypeKind.DOUBLE
如果您希望每個數組的另外的U型得到它通過:result[1].type.element_type.kind
#######OUTPUT######
>>> TypeKind.CHAR_S
因為MODUL cindex.py是那麼它不應該是很難找到如何獲取你需要的。
2.
我不認為一個get_next_sibling在Python API,AST中的每個節點都知道所有的子,所以,跳繩無趣的子樹可以很容易地通過簡單地跳過他們在遍歷父的子來完成。從禮Bendersky的有關libclang的Python API的優秀的博客文章的例子:
def find_typerefs(node, typename):
""" Find all references to the type named 'typename'
"""
if node.kind.is_reference():
ref_node = clang.cindex.Cursor_ref(node)
if ref_node.spelling == typename:
print 'Found %s [line=%s, col=%s]' % (
typename, node.location.line, node.location.column)
# Recurse for children of this node,
# skipping all nodes not beginning with "a"
for c in node.get_children():
if c.spelling.startswith ("a"):
find_typerefs(c, typename)
3.
在鐺-C而言,enumsCXChildVisitResult有3個值 CodeGo.net,CXChildVisit_Continue跳過探望,所以遊客要下一個兄弟。這樣應該是在python了。