qlmanage -p -c public.plain-text "$@" 2> /dev/null &
I got this from here.
Also, Folder.qlgenerator is noteworthy.
Tuesday, April 29, 2008
Improving Quicklook : Make Quicklook Recognize Text Files without the Extension txt
Sunday, April 27, 2008
Switch Control and Alt buttons in Windows (for OS X users)
See http://alanhogan.com/tips/swap-left-alt-and-ctrl-keys-in-windows
Saturday, April 26, 2008
Two nifty mouse related Windows apps : Strokeit and Txmouse
I rarely use Windows these days, but when I do, there are some apps I can't do without. One of them is Strokeit, which allows the user to do mouse gestures for some commands. (which Opera users are lucky to have by default). So, just by moving the mouse at the NorthEast direction
while holding the right key, you can perform "maximize" action, without going over to the title bar.
Another nice app I discovered today is txmouse. For X11 like windows handling, I had previously tried Tweakui, however it had the annoying feature of auto-raising of the pointed window.
Basically txmouse allows you to interact with non-focused windows without clicking inside them. Linux and Mac users already have this possibility (though in OS X, only scrolling is allowed -- point-to-focus is not allowed without 3rd party apps). It also brings the select to copy - middle click to paste functionality.
Friday, April 25, 2008
Speed up Make (Compilation) Process
make can make use of multiple cpu's. Simply use it as:
make -j2 where 2 is the # of CPU's you have.
Modify iTunes link arrows' behavior
defaults write com.apple.iTunes invertStoreLinks -bool YES
via : MacOSXHints
Narrow to Region / Code Folding in Emacs
You can hide/show certain parts of a document using:
- narrow-to-region : C-x n n
- narrow-to-page : C-x n p
- show all : C-x n w
To define a page, insert ^L characters to keypoint by " C-q C-l".
See also: All-out mode
Skeletons for Emacs
(define-skeleton skeleton-c++-mode-cout
" Prints out a variable using cout "
" Print variable : "
"\ncout << \" " str "\" << " str " << endl;\n" )
(global-set-key [?\C-p] 'skeleton-c++-mode-cout)
This code snippet will automatically create a cout line for a variable.
Sample Doxygen File
Doxygen is nice for creating documentation from source files.
Here is a sample Doxyfile:
Usage:
1. Document a file
/**
\file
\brief File description */
2. Document a function
/**
\param msg Message to be encoded
\param G Generator matrix for the (n,k) non-extended Hamming encoder
\return Encoded matrix
\author Ustun Ozgur
*/
3. Document a struct/class etc.
/**
\struct Params_Chase
\brief Structure holding all the Chase-II decoder variables
\param alpha Extrinsic info weight
\param beta Reliability multiplier for bits with no competing codeword available
\param btc_iter Number of iterations
\param s Unreliable bits
*/
4. Change the main page
/*! \mainpage Block Turbo Coder
\section ...
*/
Turkish mode : turkish.el for emacs
http://www.denizyuret.com/turkish/turkish.el
"This is for people trying to type Turkish documents on a U.S. keyboard." See http://denizyuret.blogspot.com/2006/11/emacs-turkish-mode.html
For example, if you write Ustun, it will automatically convert that to Üstün.
Colloquy Bug : Hides Channel Output
Sometimes Colloquy makes the text on a channel invisible.
Type "/reload style" to make content visible again.
Subversion for Source Code Revisions
I currently use subversion for source code revisions. Assembla is perfect for hosting your project.
Some commands:
svn up : Update to latest revision
svn commit -m "Commit message" : Commit changes
svn stat : See what has changed
svn diff : See diff's (all files)
svn diff a.c : See diff of a.c
svn co : Checkout, initial command
svn cat a.c --revision PREV or HEAD or 123 : get specific revisions of a.c
For Windows, tortoisesvn is perfect. On OS X, I use commandline and svnX.
Disable Antialiasing in OS X
1. Per app setting:
defaults write -app Opera AppleAntiAliasingThreshold 40
where 40 is your threshold.
2. Global setting
defaults write -g AppleAntiAliasingThreshold 40
or use Tinkertool.
Cleansozluk
cleansozluk : "Bu script ek$i sozlukteki tüm reklamlari otomatik olarak kaldırır. Normal theme'e dönüşü otomatik olarak sağlar"
Bazi buglari var, ama ise yariyor.
N800 Messages
Here are N800 related messages I posted on InternetTabletTalk forums :
http://www.internettablettalk.com/forums/search.php?searchid=1735919
LaTeX Tips
1. Read http://tobi.oetiker.ch/lshort/lshort.pdf
2. Use TeXlive for Mac and MikTeX for Windows.
3. Use emacs auctex extension for editing.
4. Skim auto-reloads pdf's.
5. Read LaTeX as lah-tech as in technology, not as lah-teks.
.inputrc
"\eo": "\C-p\C-a\ef "
"\e[A": history-search-backward
"\e[B": history-search-forward
set completion-ignore-case on
set show-all-if-ambiguous on
"\es": menu-complete
.bash_profile
alias ..='cd ..'
alias home='cd ~'
alias mat='cd ~/Documents/Matlab'
alias doc='cd ~/Documents/'
alias ping='ping -c 10'
alias ls='ls -G'
alias qlf='qlmanage -p'
export DISPLAY=localhost:0.0
shopt -s histappend
PROMPT_COMMAND='history -a'
shopt -s cdspell
test -r /sw/bin/init.sh && . /sw/bin/init.sh
if [ "$TERM" != 'dumb' ] && [ -n "$BASH" ] && [ -n "$PS1" ]
then
if [ `/usr/bin/whoami` = 'root' ]
then
export PS1='[\[\033[01;31m\]\h \[\033[01;34m\]\W \$ \[\033[00m\]'
else
export PS1='\[\033[01;32m\]\u@\h \[\033[01;34m\]\W \$ \[\033[00m\]'
fi
fi
alias matlab2='matlab -nodesktop -nosplash'
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/
export HISTCONTROL=ignoreboth
.emacs
I prefer Aquamacs. On Windows, I use Emacs W32. The following is for Aquamacs.
(setq mac-command-modifier 'meta)
(setq mac-option-modifier 'meta)
(setq inhibit-startup-message t)
(defun my-c-initialization-hook ()
(define-key c-mode-base-map "\C-m" 'c-context-line-break)
(add-hook 'c-initialization-hook 'my-c-initialization-hook)
)
(global-set-key [C-tab] 'next-buffer)
(global-set-key [C-S-tab] 'previous-buffer)
(global-set-key [S-tab] 'other-window)
(global-set-key [f2] 'save-buffer)
(global-set-key [f5] 'speedbar)
(global-set-key [f7] 'my-save-and-compile)
(global-set-key [f6] 'other-window)
(global-set-key [C-f6] 'comment-or-uncomment-region-or-line)
;(global-set-key [A-tab] 'other-window)
(global-set-key [M-f12] 'calendar)
(global-set-key [M-f9] 'kill-some-buffers)
(global-set-key [C-f4] 'kill-current-buffer)
;(global-set-key [?\A-h] 'mark-paragraph) sfsdfsdf
(global-set-key [?\A- ] 'just-one-space)
(global-set-key [M-f1] 'man)
(global-set-key [?\A-n] 'new-frame)
(fset 'yes-or-no-p 'y-or-n-p)
;; Make control+pageup/down scroll the other buffer
(global-set-key [C-next] 'scroll-other-window)
(global-set-key [C-prior] 'scroll-other-window-down)
(global-set-key "\C-z" 'shell) ; or eshell
(global-set-key (kbd "M-a") 'execute-extended-command)
; return a backup file path of a give file path
; with full directory mirroring from a root dir
; non-existant dir will be created
(defun my-backup-file-name (fpath)
"Return a new file path of a given file path.
If the new path's directories does not exist, create them."
(let (backup-root bpath)
(setq backup-root "~/.emacs.d/emacs-backup")
(setq bpath (concat backup-root fpath "~"))
(make-directory (file-name-directory bpath) bpath)
bpath
)
)
(setq make-backup-file-name-function 'my-backup-file-name)
(defun dotemacs ()
"Open .emacs"
(interactive)
(find-file "~/Library/Preferences/Aquamacs Emacs/Preferences.el"))
(add-to-list 'load-path "~/elisp")
(setq-default abbrev-mode t)
(read-abbrev-file "~/.abbrev_defs")
(setq save-abbrevs t)
(setq require-final-newline 't)
;; Save the state of emacs
(desktop-save-mode 1)
(desktop-read)
(add-to-list 'desktop-globals-to-save 'file-name-history)
(defun kill-current-buffer ()
"Kill the current buffer, without confirmation."
(interactive)
(kill-buffer (current-buffer)))
;; smarttab
;;;
;; Smart Tab
(defvar smart-tab-using-hippie-expand t
"turn this on if you want to use hippie-expand completion.")
(global-set-key [(tab)] 'smart-tab)
(defun smart-tab (prefix)
"Needs `transient-mark-mode' to be on. This smart tab is
minibuffer compliant: it acts as usual in the minibuffer.
In all other buffers: if PREFIX is \\[universal-argument], calls
`smart-indent'. Else if point is at the end of a symbol,
expands it. Else calls `smart-indent'."
(interactive "P")
(if (minibufferp)
(minibuffer-complete)
(if (smart-tab-must-expand prefix)
(if smart-tab-using-hippie-expand
(hippie-expand nil)
(dabbrev-expand nil))
(smart-indent))))
(defun smart-indent ()
"Indents region if mark is active, or current line otherwise."
(interactive)
(if mark-active
(indent-region (region-beginning)
(region-end))
(indent-for-tab-command)))
(defun smart-tab-must-expand (&optional prefix)
"If PREFIX is \\[universal-argument], answers no.
Otherwise, analyses point position and answers."
(unless (or (consp prefix)
mark-active)
(looking-at "\\_>")))
;(load-library turkish.el)
(setq-default abbrev-mode t)
(read-abbrev-file "~/.abbrev_defs")
(setq save-abbrevs t)
;(setq initial-frame-alist '((top . 10) (left . 30)
; (width . 90) (height . 50)))
;(setq default-frame-alist '((width . 80) (height . 45)))
(setq speedbar-mode-hook '(lambda ()
(interactive)
(other-frame 0)))
(cd "/Users/ustun/Documents/")
(defun my-save-and-compile ()
(interactive "")
(save-buffer 0)
(compile compile-command)
)
VLC Derleme - Bölüm I : Hazırlık
Asagidaki bilgiler eski olabilir. Daha guncel bir makale surada.
=====
Bu bölümde GNU/Linux üzerinde çalışacak bir VLC'yi derlemek için gereken hazırlıkları anlatacağım.
Öncelikle VLC'nin kendi geliştiricileri de Debian GNU/Linux dağıtımını kullandığı için sizin de bu dağıtımı kullanmanız işleri oldukça kolaylaştıracaktır, hatta ortak çalışmamız için Debian kullanmanız zorunlu diyebilirim. Debian'da birçok paket (VLC'nin bağımlı olduğu bütün paketler) önceden derlenmiş olarak geldiği için bir de onları ve onların bağımlılıklarını derlemenize gerek kalmıyor. Debian'ın özel program kurulum sistemi de zaten bağımlılıkları otomatik olarak tanıyıp yüklüyor.
1. Depoları Ayarlama ve Program İndirmeyi Öğrenme
Temel Debian sistemimizi kurduktan sonra ilk yapmamız gereken kurulum dosyalarının depolarını sisteme tanıtmak. Bu işlemi zaten kurulum sırasında yapmış olabilirsiniz, yine de buradaki adımları takip etmeniz en azından indirme hızı açısından yararlı olacaktır; örneğin ben, Debian depolarından ortalama 1.5MB/s ile program indirebiliyorum.- Root kullanıcı olarak bir metin düzenleyici ile /etc/apt/sources.list dosyasını açın. İçeriğini şu şekilde değiştirin:
deb http://ftp.tr.debian.org/debian/ etch main contrib non-free
- Daha sonra, herhangi bir terminalde (konsolda), root kullanıcı olarak şu komutu çalıştırın:
apt-get upgrade
Bu şekilde depodaki bilgileri güncellemiş olduk. - Artık rahatlıkla yeni programları ve kütüphaneleri indirebiliriz. Bunun için Debian'da iki seçenek bulunmakta: Grafik tabanlı olan Synaptic ya da konsol tabanlı apt-get. İlk başlarda Synaptic kullanmak daha mantıklı olacaktır, alıştıkça apt-get'i kullanmaya başlayabilirsiniz.
- Synaptic: Synaptic'te yapmamız gereken tek şey istediğimiz programa sağ tıklayıp "Mark for Installation"ı seçmek. Daha sonra onay kutularını takip edip uygula dediğimizde program kurulmuş oluyor.
- apt-get: apt-get kullanmak için komut satırında öncelikle root kullanıcı olmak gerekiyor.(
su
komutuyla --ya dasudo apt-get ...
da kullanabilirsiniz.sudo
geçici olarak root olmanıza yarayan bir komut. Bunu kullanmak için sudo programını kurup daha sonra da /etc/sudoers dosyanızın sonuna şuna benzer bir satır eklemeniz gerekiyor:ustun ALL=(ALL) ALL )
Kullanımı şu şekilde:apt-get install abc
komutuyla abc programını yüklüyoruz. Aynı anda hem abc, hem de xyz programlarını kurmak istersek yazmamız gerekenseapt-get install abc xyz
. Benzer şekilde, bir programı kaldırmak içinapt-get remove abc
komutunu kullanabilirsiniz. Son olarak, bir programı derlemek için gereken tüm bağımlılıkları indirmek içinapt-get build-dep abc
komutu var.Not: Bu komutu aslında VLC'nin gereksinim duyduğu tüm programları indirmek için kullanabiliyor olmamız gerek; ancak son denememde hata vermişti.(apt-get build-dep vlc) Belki şu an çalışıyordur.
2. Bağımlılıkları İndirme
Bu kısımda VLC'yi derlemek için gerekli olan birkaç programı indireceğiz. Burada bilinmesi gereken kilit nokta şu: Bir programı derlemek için başka bir programa gereksinim duyuluyorsa bu genelde o programın geliştirme kütüphaneleridir. Mesela bizim programımız foo programına gereksinim duyuyor diyelim. Bu durumda Debian'da indirmemiz gereken genelde şu isimde bir paket olur: "libfoo-dev" Yani foo'nun geliştirme (dev) kütüphanesi (dev). Bazen de header paketlerine gereksinim duyulabilir. foo-headers şeklinde. Bazı paketlerdeyse baştaki lib bulunmamakta ve kütüphane foo-dev şeklinde depoda bulunmakta. Bu önemli noktayı bildikten sonra derleme işlemi oldukça kolaylaşıyor. Zira derlerken libhal bulunamadı gibi bir hatada yapmamız gereken Synaptic ya da apt-get kullanarak libhal veya libhal-dev gibi paketleri indirmek. Bu şekilde VLC'nin gereksinim duyduğu kütüphaneleri sırasıyla yüklüyoruz. Bu kütüphanelere VLC'nin wikisinden ulaşabilirsiniz. Debian'da paket yönetimiyle ilgili en güzel kısmı ise sona sakladım. apt-get'le sistemde kurulu paketlerin listesini alıp daha sonra tek bir komutla yeni veya farklı bir kuruluma aynı paketleri yükleyebiliyorsunuz. Örneğin benim sistemimde kurulu paketlerin listesini şuradan indirebilirsiniz. Daha sonra bu paketi kaydettiğiniz klasöre gidip şu komutu yazarsanız bende kurulu olan tüm paketler size de yüklenmiş oluyor: dpkg --set-selections <ustunsecim
dselect install
Böylece sizin sisteminiz de benim sistemim gibi VLC derlemeye hazır hale geliyor! :) Bir sonraki bölümde VLC derlemek için gereken komutları anlatacağım.
Debian Altında VLC Derleme
Ön Hazırlıklar
- Öncelikle depolarımızı source depolarını da içerek şekilde güncelliyoruz. Bunun için,
/etc/apt/sources.list
dosyasını şu ve benzeri şekilde değiştirin:deb http://ftp.tr.debian.org/debian/ testing main contrib non-free deb-src http://ftp.tr.debian.org/debian/ unstable main contrib non-free deb-src http://www.debian-multimedia.org sid main deb http://www.debian-multimedia.org lenny main
Daha sonraapt-get update
veapt-get upgrade
diyerek tüm güncellemeleri yapın. apt-get build-dep vlc
diyerek derlemek için gerekli paketleri indiriyoruz. Bu şekilde gerekli çoğu paket indi.- Şimdi kalan birkaç paketi indireceğiz.
apt-get install subversion automake1.9 libtool cvs libgcrypt-dev libfaac-dev liblame-dev libfaad-dev libtwolame-dev libqt4-dev
Kaynak kodu indirme ve derleme
VLC'nin, X264'ün ve FFMPEG'in kodunu indiriyoruz. Önce X264 ve FFMPEG'i derleyip, daha sonra da VLC'yi derliyoruz.
% svn co svn://svn.videolan.org/vlc/trunk vlc
% cd vlc
% ./bootstrap
% cd extras/
% svn co svn://svn.videolan.org/x264/trunk x264
% cd x264
% make
% cd ..
% svn co svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
% cd ffmpeg
% ./configure --enable-gpl --enable-pp \
--enable-pthreads --enable-libmp3lame \
--enable-libfaac
% make
% cd ..
% cd ..
% mkdir build; cd build;
%../configure --prefix=/usr \
--enable-snapshot --enable-debug \
--enable-dbus-control --enable-musicbrainz \
--enable-shared-libvlc --enable-mozilla \
--enable-lirc \
--with-ffmpeg-tree=../extras/ffmpeg \
--enable-x264 --with-x264-tree=../extras/x264 \
--enable-shout --enable-taglib \
--enable-v4l --enable-cddax \
--enable-dvb --enable-vcdx \
--enable-realrtsp --enable-xvmc \
--enable-svg --enable-dvdread \
--enable-dc1394 --enable-dv \
--enable-theora --enable-faad \
--enable-twolame --enable-real \
--enable-flac --enable-tremor \
--with-ffmpeg-mp3lame --with-ffmpeg-faac \
--enable-skins2 --enable-qt4 \
--enable-ncurses \
--enable-aa --enable-caca \
--enable-esd --disable-portaudio \
--enable-jack --enable-xosd \
--enable-galaktos --enable-goom \
--enable-ggi \
--disable-cddax --disable-vcdx \
--disable-quicktime
% make
GNU/Linux'ta Program Derleme - I
Bu kısımda yeni başlayanlar için GNU/Linux üzerinde program derlemeyi ve kurmayı anlatacağım. Anlatacağım konular temel seviyede ve bu yazıda bütün kütüphanelerin sistemde kurulu ve tanıtılmış olduğunu varsayıyorum. (Tanıtılmamış olduğu durumları sonraki yazılarda inceleyebilirim.)
Öncelikle, aslında küçük (iki üç dosyadan oluşan) programlarımızı
gcc
komutlarını konsolda kullanarak derleyebiliriz; ama program büyüdükçe hangi dosyanın hangisine bağlanacağı gibi kararlar karmaşıklaşır. Bu nedenle, automake gibi bu genel derleme işini otomatikleştiren araçlar kullanılmakta. Bu bölümde daha önceden automake kullanılmış programlara sahip olduğumuzu varsayıyoruz. (ki kullandığımız birçok programın kaynak kodları bu şekilde zaten)
GNU/Linux'ta program derlemek üç ana adımdan oluşur:
- configure etme: configure komutları genelde sistemle ilgili veri almak için kullanılır. Bu komut sayesinde sistemde hangi program/kütüphanelerin nerede kurulu olduğu araştırılır ve programın hangi özelliklerini etkinleştirmek istediğimizi bu adımda belirtiriz.
Bu adımdaki komutumuz şu şekilde:
./configure
configure komutunun başındaki ./ karakterleri sistem PATH'inde bulunmayan herhangi bir çalışır dosyayı çalıştırmak için kullanılmakta. Yani, Windows altında olduğu gibi geçerli klasördeki çalışır dosyayı sadece adını vererek çalıştıramıyoruz; komutun önüne ./ eklememiz gerekiyor. (Not: Bir dosyayı çalışır hale getirmek için dechmod +x dosyaadi
yapmamız gerekiyor.) Bunun dışında configure aşamasında programın seçeneklerini değiştirebileceğimizden bahsetmiştim. Mevcut seçenekleri çoğu durumda./configure --help
ile öğrenebiliyoruz. Daha sonra yapmamız gereken de./configure --enable-abc --disable-foo
şeklinde istediğimiz özellikleri ekleyip kaldırmak. Bu aşamada aynı zamanda bazı kütüphaneleri nereye kurduğumuzu da belirtiyoruz:./configure --with-ffmpeg --with-ffmpeg-path=/usr/ffmpeg
gibi. Tabii burada yazdığım parametreler sadece örnek, geçerli parametreleri daha önce belirttiğim gibi./configure --help
ile öğrenmeniz gerekiyor. configure komutunun sonucunda o klasör altında bir Makefile oluşturuluyor. Bu dosya bir sonraki adımda işe yarayacak. - make: Bir sonraki aşama, asıl derleme aşamasının olduğu aşama. Genelde başkalarının yazdığı kodları çalıştırırken birinci aşamayı geçmeniz halinde make aşamasında fazla sorun yaşamıyorsunuz. Tabii kendi yazdığınız bir programsa bu aşamada hatalar çıkabilir.
- make install: Bu son aşamada aslında herhangi bir derleme yapmıyoruz. Bu adımın amacı derlediğimiz programı sistem klasörlerine kopyalamak; çünkü şu ana kadar yaptığımız bütün işlemler sonuçlarını içinde bulunduğumuz klasörde oluşturdu. Tabii ki sistem klasörlerine erişmemiz gerektiği için
root
kullanıcı olmamız gerekiyor. Bu komutu damake install
deyip uyguladıktan sonra program her kullanıcı tarafından kullanılabilir duruma geliyor. Bu adımla ilgili belirtilmesi gereken diğer bir nokta aslında bu adımda 2. adımdaki make komutuna farklı bir parametre vermiş olduğumuz. Yani make komutu default halinde derlemeyi yapıyor; ama make install gibi bir komutla başka işlemler yapmasını sağlayabiliyorsunuz. Burada bir diğer örnek make clean olabilir. Bu da bütün derleme sonrası oluşturulmuş dosyaları silmenize ve sadece kaynak dosyalarının olduğu özgün duruma dönmenizi sağlıyor. Makefile dosyasını dikkatli incelerseniz bütün bu install, clean gibi komutların işlevlerinin yazılmış olduğunu göreceksiniz.
- .tar.gz uzantılı bir dosyayı açmak için gereken komut
tar -zxf dosyaadi
ve tar.bz2 içinsetar -jxf dosyaadi
- VLC gibi programlarda çok uzun configure komutları oluyor. Bunları her seferinde girmek yerine, DOS'taki batch dosyaları gibi script dosyaları oluşturabilirsiniz. Yapmanız gereken şunlar: Düz metin dosyasının ilk satırına
#!/bin/sh
yazın, sonraki satırlara da gireceğiniz komutları yazın. Eğer tek bir satırdan uzun olursa okunabilirliği artırmak adına\
kullanarak bir sonraki satırın bu satırını devamı olduğunu belirtin. Örneğin:./configure --enable-a --enable-b --enable-c --enable-d --enable-e --enable-f --enable-g --enable-h --enable-i --enable-j --enable-k
yerine./configure --enable-a --enable-a \ --enable-b --enable-c --enable-d \ --enable-e --enable-f --enable-g
gibi satırlar yazın. NOT: Her satırdaki son karakter \ olmak zorunda, yani \ karakterinden sonra boşluk bile gelmemeli. - Bu komutları çalıştırdığınızda ekrana bir sürü yazı gönderecekler. Bunların bir kısmı normal çıktılar, diğerleri ise uyarı ve hatalar. Haliyle bu iki grubu birbirinden ayırdetmek güçleşiyor. Bu nedenle bu iki grubu iki ayrı dosyaya yazdırmak işinize yarayabilir.
Burada yapmanız gereken 1> ve 2> ile sırasıyla normal veriyi ve hataları başka dosyalara göndermek.
Örneğin,
./configure 1>normal.txt 2>hata.txt
satırıyla programın normal metnini normal.txt dosyasına, hataları ise hata.txt dosyasına yazdırabiliriz. - Derleme işlemleri uzun sürdüğü için configure ve make işlemlerini ardarda yaptırmak isteyebilirsiniz. Burada dikkat edilmesi gereken nokta şu: Eğer yukarıda anlatıldığı şekilde bir script(batch) dosyası oluşturup bu iki komutu alt alta yazarsanız, birinci komut hata verse de ikinci komut yapılacaktır. Ör:
./configure make
hatalı bir kullanımdır. Birincinin düzgün tamamlanması halinde ikinci programı başlatmak istersem ikisi arasına && koymak gerekir. Ör:./configure && make
Printout of All Source Files
enscript -2rE -C -o - src/*.cpp src/*.h | pstopdf -i -o print.pdf && open print.pdf
Sample Makefile
Some Information about Makefile's
=================================
- Type "make" on the command line to make the project.
- You need to install the GNU make utility.
- Type "make clean" to remove object files.
- @ suppresses output.
- pkg-config automatically finds the required compiler and linker flags for developing against a library.
- Issue "export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/" if pkg-config can't find the libraries This directory contains *.pc files.
- $< : an element of the dependencies (to the right of : ) $^ : all dependencies $@ : target (to the left of : )
- Command prototype is : targets : prerequisites TAB command
- Tabs must be used for indentation; not spaces.
- CPPFLAGS are preprocessor flags, CFLAGS are flags for the C compiler (also to be supplied at linking time), CXXFLAGS are flags for the C++ compiler (also to be supplied at linking time)
- If you have a single C++ file, compile using (no need for a Makefile):
g++ `pkg-config --cflags itpp` -o my_prog my_prog.cpp `pkg-config --libs itpp`
CXX=@g++
CPPFLAGS=$(shell pkg-config --cflags itpp)
CXXFLAGS=-Wall
LDFLAGS=$(shell pkg-config --libs itpp)
SOURCES= $(wildcard *.cpp) # Or manually list the source files here
OBJECT=$(SOURCES:.cpp=.o)
OBJECT_DIR=obj
OBJECTS= $(patsubst %,$(OBJECT_DIR)/%,$(OBJECT))
EXECUTABLE=../btctest
all: $(SOURCES) $(EXECUTABLE)
INSERT TAB HERE@echo Finished without errors.
$(EXECUTABLE) : $(OBJECTS)
INSERT TAB HERE @echo Linking...
INSERT TAB HERE$(CXX) $(CXXFLAGS) $(LDFLAGS) $^ -o $@
$(OBJECT_DIR)/%.o: %.cpp
INSERT TAB HERE @echo Compiling $^
INSERT TAB HERE $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $< -o $@ dist : $(SOURCES) $(EXECUTABLE) $(OBJECTS) INSERT TAB HEREcd ../.. && tar -cjf a.tar.bz2 btc_itpp/src/ btc_itpp/btctest btc_itpp/Makefile
.PHONY: clean
clean:
INSERT TAB HERE @echo Cleaning object files...
INSERT TAB HERE @rm -rf $(OBJECTS)
To call it from parent dir:
# This file calls the other Makefile inside the src/
all:
INSERT TAB HERE@$(MAKE) -C src
clean:
INSERT TAB HERE @$(MAKE) -C src clean
dist:
INSERT TAB HERE @$(MAKE) -C src dist
doc: src
INSERT TAB HERE /Applications/Doxygen.app/Contents/Resources/doxygen Doxyfile
Subscribe to:
Posts (Atom)