青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Clear

記憶中的閃光,總會蒙塵。
隨筆 - 6, 文章 - 0, 評論 - 0, 引用 - 0
數據加載中……

2012年11月15日

讓Premake4支持protobuf的protoc生成源文件

最近在使用Premake4進行項目配置生成makefile之類。

比較而言,Premake4比cmake還是感覺簡單一點,至少lua語法簡單,premake4的配置文件比較簡單易讀,而cmake的配置文件就比較復雜,而且又是自己定義的一套東西,用起來實在比較煩。

Premake4還有一個比較好用的特性,可以直接用 **/*.cpp 指定項目包含所有目錄下的cpp文件,而不用單個指定。這樣每次增加一個文件不用老等編譯了才想起來忘記了增加文件到配置中。算是給懶人的一個福利吧。

當然,Premake4也有自己的缺陷,目前還不支持自定義規則,所以如果項目中有用到什么自動生成源文件的特性就比較麻煩了,比如這次說到的protobuf要用protoc編譯.proto文件生成.pb.cc和.pb.h文件,另外QT也有類似的需求,就我之前某項目中,也使用了tolua++生成過c++的lua接口文件。

但是,Premake4雖然還不支持自定義規則,但是總算有一個prebuildcommands可以用,于是研究了一下,自制了一個.proto文件的"編譯規則":

function protobufs(pat)
local list = {}
if type(pat) == "string" then
list[1] = pat;
elseif type(pat) == "table" then
list = pat;
end
local proj = project();
for _,pat in ipairs(list) do
local protofiles = os.matchfiles(pat);
for _,protofile in ipairs(protofiles) do
local basename = path.getbasename(protofile);
local sourcedir = proj.basedir.."/"..path.getdirectory(protofile);
local sourcefile = proj.basedir.."/"..protofile;
local targetdir = "$(OBJDIR)/proto/"..path.getdirectory(protofile);
local targetfile = targetdir.."/"..basename..".pb.cc";
prebuildcommands {
"@mkdir -p "..targetdir,
"@test "..sourcefile.." \\\n"
.."\t\t\t -ot "..targetfile.." || \\\n"
.."\t\t( echo protoc "..protofile.." && \\\n"
.."\t\tprotoc --cpp_out "..targetdir.."\\\n"
.."\t\t\t"..sourcefile.."\\\n"
.."\t\t\t".." -I"..sourcedir.." ) \\\n"
}
files {
path.join(targetdir, basename..".pb.h"),
path.join(targetdir, basename..".pb.cc"),
}
includedirs { targetdir }
end
end
end

使用方法呢,就是把上面的代碼保存到protobuf.lua里面,然后在premake4.lua最開始的時候,調用

dofile "protobuf.lua"

然后在項目定義的時候,使用

protobufs { "**/*.proto" }

就可以了。

?

當然,還有一點要注意的,我的系統是mac,但腳本在linux下應該也能同樣運行,但是windows下面的話,可能就需要做一點改動了。

posted @ 2012-11-15 22:44 Clear 閱讀(1402) | 評論 (0)編輯 收藏

2012年11月11日

MacVim中Pyclewn的配置

換到Mac下面,MacVim自然裝上了。

要想調試程序,直接gdb倒也可以,不過就是找代碼很費力,這就要看Pyclewn了。

下載,安裝,一切似乎都正常。

可是啟動pyclewn以后,發現gdb的命令沒有輸出到buffer?怎么搞?

原來pyclewn用的還是系統自帶的gdb,暈,版本好老了。

在.vimrc里面加上

set pyclewn_args='-p ggdb'

指定使用macports的gdb,這就行了。

ps.

MacVim 的snapshot 64版本的balloon顯示不出來,不知道怎么回事。

升級到snapshot 65就ok了。

posted @ 2012-11-11 17:38 Clear 閱讀(630) | 評論 (0)編輯 收藏

2012年10月28日

GDB在Mac下的調試信息

上次說了GDB的pretty printer,這次來說說調試程序的問題。

在Linux或者Windows下面,寫好代碼,g++編譯,連接,調試,一切很順暢。

但是在Mac下面,有點小問題。

我們如果是直接編譯生成可執行文件:

g++ test.cpp -g -o test

ok,我們用GDB調試,沒有問題。
但是如果我們分兩步,編譯和連接分開的話:

g++ test.cpp -g -c -o test.o
g++ -o test test.o

這次我們gdb test再調試,會發現GDB找不到調試符號信息!

兩次生成有什么不同呢?
一次編譯生成的test,旁邊有一個test.dSYM,而單獨連接的test,沒有這個。

test.dSYM就是調試符號信息。
要想生成這個東西,也簡單,運行dsymutil就可以了:?

dsymutil test

再然后,就可以用GDB順利調試了。

g++直接生成可執行文件的時候,會幫我們調用一次dsymutil,但是單獨連接的時候卻不會做這個,這就是造成差別的原因。

posted @ 2012-10-28 23:47 Clear 閱讀(888) | 評論 (0)編輯 收藏

2012年9月24日

Mac 下使用GDB的pretty printer

GDB 從7.x版本開始就支持pretty printer

可是一直以來都沒有見到這個東西起作用,最近就研究了一下。

我的環境是Mac Mountain Lion + macports,GCC 4.7,GDB 7.5

首先,按照

http://sourceware.org/gdb/wiki/STLSupport

下載checkout STL的pretty printer。

設置好.gdbinit以后,運行告知已經注冊,不能重復注冊。

$locate printers.py

發現在/opt/local/share/gcc-4.7/gcc-4.7.1/python/libstdcxx/v6已經有一份現成的了。

好吧,我們就使用現有的好了。

寫個程序,調試,print,怎么回事?還是不成?

頭暈了好久,好在python的源碼是可以隨便看隨便改的,于是在printers.py里面改來改去,調試了半天,發現:

這個printers.py注冊了好多stl類型的printer,打印出來有以下這些:

std::__cxx1998::__7::unordered_multiset

std::tr1::unordered_multiset

std::unordered_set

std::tr1::unordered_multimap

std::tr1::__7::weak_ptr

std::__7::bitset

std::__cxx1998::multiset

std::bitset

std::forward_list

std::__7::forward_list

std::__cxx1998::forward_list

std::__7::_Rb_tree_iterator

std::__7::list

std::__debug::unordered_multimap

__gnu_cxx::slist

std::__7::priority_queue

std::__debug::map

std::_List_const_iterator

std::__debug::unordered_map

__gnu_cxx::_Slist_iterator

std::set

std::__cxx1998::__7::_Deque_const_iterator

std::__7::_List_const_iterator

std::__7::multiset

std::shared_ptr

std::__7::queue

std::__cxx1998::_List_iterator

std::tr1::unordered_map

std::__7::vector

std::__debug::queue

std::__norm::_Deque_const_iterator

std::__7::unordered_set

std::__norm::_Deque_iterator

std::__cxx1998::_Deque_iterator

__gnu_cxx::__7::_Slist_iterator

std::__cxx1998::list

std::__cxx1998::__7::list

std::unordered_multimap

std::__cxx1998::unordered_multiset

std::__cxx1998::__7::_List_iterator

std::__7::map

std::__debug::vector

std::tr1::__7::unordered_set

std::__7::basic_string

std::weak_ptr

std::__7::set

std::__7::unordered_multiset

__gnu_cxx::__7::__normal_iterator

std::__cxx1998::__7::vector

std::unordered_map

std::list

std::tr1::__7::unordered_map

std::__7::unordered_multimap

std::vector

std::tr1::unordered_set

std::_List_iterator

std::__7::_Deque_iterator

std::__cxx1998::map

std::__cxx1998::bitset

std::__7::weak_ptr

std::__cxx1998::vector

std::__cxx1998::unordered_set

std::priority_queue

__gnu_cxx::__7::slist

std::__7::_Rb_tree_const_iterator

std::_Deque_const_iterator

std::__7::deque

std::__cxx1998::set

std::__cxx1998::__7::bitset

__gnu_debug::_Safe_iterator

std::tr1::__7::unordered_multimap

__gnu_cxx::__normal_iterator

std::__cxx1998::__7::multiset

std::__cxx1998::__7::unordered_map

std::__debug::unique_ptr

std::__cxx1998::_List_const_iterator

std::_Deque_iterator

std::tr1::__7::unordered_multiset

std::unordered_multiset

std::__cxx1998::__7::unordered_multimap

std::__debug::multiset

std::tr1::weak_ptr

std::__cxx1998::_Deque_const_iterator

std::__cxx1998::unordered_map

std::__7::unique_ptr

std::__debug::list

std::__debug::unordered_multiset

std::__cxx1998::deque

std::_Rb_tree_const_iterator

std::__debug::bitset

std::queue

std::tr1::__7::shared_ptr

std::__debug::unordered_set

std::tr1::shared_ptr

std::__cxx1998::__7::_List_const_iterator

std::__cxx1998::__7::_Deque_iterator

std::__cxx1998::__7::map

std::__7::stack

std::unique_ptr

std::__cxx1998::__7::deque

std::map

std::__7::multimap

std::stack

std::__debug::stack

std::_Rb_tree_iterator

std::multimap

std::__norm::_List_const_iterator

std::__debug::multimap

std::__norm::_List_iterator

std::deque

std::tuple

std::__cxx1998::unordered_multimap

std::basic_string

std::__7::tuple

std::__debug::deque

std::__debug::priority_queue

std::__7::_Deque_const_iterator

std::__7::shared_ptr

std::__cxx1998::__7::multimap

std::__debug::forward_list

std::__7::unordered_map

std::__debug::set

std::__cxx1998::__7::unordered_set

std::__cxx1998::__7::set

std::__7::_List_iterator

std::__cxx1998::multimap

std::__cxx1998::__7::forward_list

std::multiset:

然后,我們的一個簡單的string類型,傳入到python的lookup里面查找,找不到?

最后發現,string類型傳入python以后的basename是basic_string,沒有前面的namespace!

于是,在Printer類的add_version函數里面,增加一行

self.add(name, function)

保存,重新打開GDB,調試程序,OK了:

(gdb) p s

$1 = "great"

(gdb) p v

$2 = vector of length 5, capacity 8 = {"a1", "a2", "a2", "a3", "a4"}

posted @ 2012-09-24 23:15 Clear 閱讀(1761) | 評論 (0)編輯 收藏

2009年9月27日

CoLinux的網絡配置

     摘要: 昨天的說到配置CoLinux在Windows下面啟動另一個分區里面的Linux,但是網絡配置只是使用了最簡單的slirp模式。

CoLinux的網絡配置共有3種:

slirp:最簡單的模式,CoLinux內可通過Windows系統訪問網絡,但外部不能直接訪問Linux,如果需要訪問,需要做端口映射。
tuntap:在Windows中虛擬一塊網卡,Linux與Windows通過該網卡通訊,Linux不能直接訪問外部網絡,必須在Windows上配置路由和NAT,或者簡單使用Windows的Internet連接共享ICS。
pcap-bridge:必須有一塊連接網絡的網卡才能使用,另外需要安裝WinPCap軟件。該模式將一塊實際網卡模擬出另一塊網卡并連接到網絡,對外部看來,就好像實際上有兩臺不同機器一樣。
ndis-bridge:與pcap-bridge模式一樣,不過不使用WinPCap軟件接口而是通過Windows的NDIS接口層模擬網卡。  閱讀全文

posted @ 2009-09-27 22:29 Clear 閱讀(4633) | 評論 (0)編輯 收藏

Windows和Linux雙啟動,并用在Windows下配置CoLinux啟動

     摘要: Windows和Linux都是好東西,配置雙啟動不難,但是有時候在Windows下面想要臨時換到Linux,總是麻煩。

以前都是用VmWare,配置使用實際硬盤,然后再Windows里面進行啟動另一個分區里面的Linux然后操作。

不過這樣實在是麻煩,而且VmWare占用資源也是在太大,如果配置512內存,就要在系統里面直接占用掉512M內存,即使實際上Linux根本不用那么多。

不過,前段時間發現了CoLinux這個好東西,可以把Linux內核作為Windows的本地進程運行,不錯不錯。
  閱讀全文

posted @ 2009-09-27 01:11 Clear 閱讀(1968) | 評論 (0)編輯 收藏

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲午夜精品网| 欧美大片91| 欧美成人免费va影院高清| 久久国产成人| 久久夜色精品国产| 美女被久久久| 亚洲精品资源| 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲午夜一区二区| 亚洲一区二区网站| 久久免费视频在线观看| 亚洲国产成人av好男人在线观看| 欧美国产成人在线| 在线一区二区三区做爰视频网站| 午夜精品一区二区三区在线| 久久视频国产精品免费视频在线| 你懂的视频欧美| 国产精品porn| 亚洲第一主播视频| 性做久久久久久久免费看| 免费成人黄色片| 中文在线一区| 久久嫩草精品久久久精品| 欧美日韩国产小视频| 国产一级久久| 亚洲欧美成人一区二区在线电影 | 久久国产精品99久久久久久老狼| 久久综合久久88| 亚洲精品综合精品自拍| 欧美一区二区在线免费播放| 欧美韩日一区二区| 在线观看日韩av先锋影音电影院| 亚洲一区二区三区免费观看| 久久av免费一区| 欧美日韩精品一区二区在线播放 | 国产主播精品| 亚洲私人影院在线观看| 久久精品国产久精国产爱| 欧美中文字幕久久| 最新国产拍偷乱拍精品| 国产日本欧美在线观看| 亚洲最快最全在线视频| 免费亚洲一区| 欧美在线免费观看| 国产精品美女久久久久aⅴ国产馆| 另类激情亚洲| 久久夜色精品国产| 亚洲无吗在线| 欧美日韩亚洲一区二区三区在线观看 | 亚洲欧美日产图| 欧美日韩国产经典色站一区二区三区| 国产亚洲女人久久久久毛片| 亚洲伊人色欲综合网| 亚洲精品五月天| 欧美日韩国产va另类| 日韩视频一区二区三区在线播放免费观看 | 午夜精品一区二区三区四区 | 免费不卡视频| 在线电影国产精品| 久久性天堂网| 久久精品国产99国产精品澳门| 国产精品视频男人的天堂| 亚洲一区二区三区四区中文 | 久久久久久久久久久久久9999| 国产精品视频精品视频| 性欧美精品高清| 午夜在线精品| 国产精品自拍三区| 久久精品一级爱片| 久久久91精品国产一区二区精品| 国外精品视频| 亚洲福利视频一区二区| 欧美韩国日本综合| 亚洲在线国产日韩欧美| 亚洲一区精品电影| 国内精品久久国产| 在线视频欧美日韩| 欧美午夜不卡| 性亚洲最疯狂xxxx高清| 亚洲欧美在线一区| 在线不卡中文字幕| 亚洲国产精品一区在线观看不卡| 欧美黄色一区| 午夜精品久久久久久久蜜桃app | 麻豆成人91精品二区三区| 激情文学一区| 亚洲国产精品久久久久秋霞不卡| 欧美国产先锋| 午夜精品久久久久久久 | 国产精品九色蝌蚪自拍| 欧美在线观看视频一区二区三区| 欧美一区影院| 亚洲精选在线| 久久综合九色欧美综合狠狠| 欧美成人免费一级人片100| 亚洲五月婷婷| 久久五月天婷婷| 亚洲综合电影| 久久亚洲综合网| 99视频精品在线| 欧美一区二区网站| 亚洲欧美激情四射在线日| 麻豆精品一区二区av白丝在线| 亚洲中午字幕| 欧美精品在线观看一区二区| 欧美一区二区三区免费在线看 | 羞羞漫画18久久大片| 亚洲经典自拍| 欧美一区二区成人6969| 一区二区三区四区国产| 久久人人九九| 久久久亚洲一区| 国产精品久久久久婷婷| 91久久久在线| 在线观看久久av| 午夜亚洲伦理| 在线中文字幕一区| 欧美激情综合亚洲一二区 | 日韩午夜在线电影| 欧美在线观看www| 一区二区三区视频在线观看| 久久亚洲一区| 欧美成人久久| 亚洲国产一区二区三区a毛片| 亚洲无限av看| 亚洲欧美日韩一区在线| 欧美日韩亚洲国产一区| 亚洲国产精品黑人久久久| 在线观看亚洲视频| 欧美综合国产| 久久亚洲精品伦理| 国产亚洲欧美激情| 一本色道久久综合亚洲精品小说| 亚洲欧美日本日韩| 欧美精品在线免费| 亚洲高清av| 亚洲人成在线播放网站岛国| 久久国产精品一区二区三区四区| 欧美一区二区黄色| 国产日本亚洲高清| 欧美一区二区日韩一区二区| 欧美综合激情网| 久久成年人视频| 久久五月婷婷丁香社区| 韩国精品久久久999| 久久国产主播| 麻豆国产精品va在线观看不卡| 国产色产综合产在线视频| 亚洲宅男天堂在线观看无病毒| 香蕉视频成人在线观看 | 久久久免费av| 欧美成人精品一区二区| 亚洲破处大片| 欧美日韩国产色站一区二区三区| 99国产精品久久久| 欧美与黑人午夜性猛交久久久| 国产九九精品| 久久久视频精品| 欧美黄色片免费观看| 在线中文字幕日韩| 国产日韩精品一区| 欧美1区3d| 亚洲香蕉成视频在线观看| 久久久久国产免费免费| 91久久精品一区| 国产精品伦一区| 久久久精品午夜少妇| 欧美激情性爽国产精品17p| 在线亚洲激情| 国产又爽又黄的激情精品视频| 久久精品国产99精品国产亚洲性色 | 欧美激情亚洲国产| 在线视频你懂得一区| 久久综合色天天久久综合图片| 亚洲精品综合久久中文字幕| 国产精品最新自拍| 欧美成人免费播放| 欧美一级一区| 中文国产成人精品| 免费视频最近日韩| 亚洲欧美区自拍先锋| 亚洲欧洲精品一区二区三区不卡 | 亚洲人成绝费网站色www| 亚洲制服av| 亚洲经典三级| 国产自产高清不卡| 欧美日韩亚洲国产一区| 久久久高清一区二区三区| 一本综合精品| 亚洲福利视频免费观看| 久久蜜臀精品av| 亚洲一区三区在线观看| 最新精品在线| 永久域名在线精品| 国产日韩亚洲欧美| 欧美亚州一区二区三区| 欧美精品1区2区| 久久综合五月天婷婷伊人| 国产精品综合av一区二区国产馆| 美女精品在线|