2013年8月16日 星期五

[OSX] 使用 MacPorts 指定參數編譯 Source code 筆記 @ Mac 10.8

最近在開發 OSX app 時,常常會碰到一些 library 找不到或需要客制化的問題,例如以 clang++ 與 -stdlib=libc++ -std=c++11 等相關參數的指定。

以 wxWidgets30 為例,若單純用 sudo port install wxWidgets30 時,預設會直接安裝已編好的 binary 檔案,若想要強制 source code 編譯,則用 sudo port install -s wxWidgets30。

但從 source code 編譯時,有想要下一些 configure 參數咧?那就用 configure.args 吧!

$ sudo port install -s wxWidgets30 configure.args="--with-osx_cocoa --with-libiconv=no --with-macosx-sdk=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk --with-macosx-version-min=10.7 --disable-shared --disable-debug"

如此一來,看 log 時可以找到它在 configure 真的下了這些參數。那 CXXFLAGS 、LDFLAGS 呢?一樣用 configure.cxxflags 和 configure.ldflags 處理。

然而,有時 configure.cxxflags 沒有滲透很深,那就改用 configure.cxx="clang++ -std=c++11 -stdlib=libc++" 來處理吧 :P

故以 wxWidgets30 為例,想要編出支援 c++11 的方式(可以先用 port install wxWidgets30 補完相依性後,再用 port uninstall wxWidgets30 後,再開始用 port -s install wxWidgets30):

$ port info wxWidgets30
wxWidgets30 @2.9.5_2 (graphics, devel)
Variants:             aui, debug, monolithic, [+]sdl, stdlib, universal

Description:          wxWidgets is a mature open-source cross-platform C++ GUI framework for Mac OS, Unix, Linux, Windows. It can
                      make use of a variety of native widget sets as well as its own widget set: Mac OS, GTK+, Motif, WIN32.
                      wxWidgets will even run on embedded systems using Linux and X11.
Homepage:             http://www.wxwidgets.org/

Library Dependencies: jpeg, tiff, libpng, zlib, libiconv, expat, libsdl, libsdl_mixer
Conflicts with:       wxgtk, wxWidgets
Platforms:            darwin
License:              wxwidgets-3.1
Maintainers:          jwa@macports.org, mojca@macports.org

$ sudo port install -s wxWidgets30 configure.cc=clang configure.cxx="clang++ -std=c++11 -stdlib=libc++" configure.cxxflags="-std=c++11 -stdlib=libc++ -O2" configure.objcxxflags="-std=c++11 -stdlib=libc++ -O2"

[OSX] iCloud Document 與 Dropbox 同步設定 @ Mac 10.8

icloud & dropbox

最近又恢復到當兵時期的多雲工作模式,依靠 Dropbox 服務來處理異質環境

主因是 Apple 用 iCloud 服務,剛好我在 OSX 滿常用 TextEdit 來編輯一些文件,這時候就希望 iCloud 裡的文件可以再多台機器上觀看,故弄一下簡單的整合方式就是透過 Dropbox 服務。

首先要找出 OSX 的 iCloud 文件位置:

$ ls ~/Library/Mobile\ Documents/com~apple~TextEdit/Documents

描述現況環境:

  • 共有 2 台電腦,一台 OSX ,另一台 Windows
  • 共有 2 個 Dropbox Account (Alice@dropbox, Bob@dropbox)
  • 共有 1 個 iCloud Account (Bob@iCloud)
首先,以 Windows + Alice@Dropbox 作為基準,安裝完 Dropbox 後,建一個目錄 CloudService 目錄後,並分享給 Bob@dropbox,假設 Bob 得到的目錄是 ~/Dropbox/CloudServiceFromAlice。


在 Bob@dropbox 裡建立一個 symbolic link 讓同步 OSX 的 ~/Library/Mobile\ Documents/com~apple~TextEdit/Documents目錄(請先備份好了,以免出事),如此一來,就等同於把 Bob@iCloud 的文件分享到 Dropbox 服務上,而 Alice@dropbox 也可以讀取此份文件

$ cd ~/Dropbox
$ ln -s ~/Library/Mobile\ Documents/com~apple~TextEdit/Documents ~/Dropbox/CloudServiceFromAlice/Documents

2013年8月13日 星期二

Android 開發筆記 - Eclipse Import: Invalid project description. overlaps the location of another project

android_imporInvalid project description. overlaps the location of another projectt_projects

最近開發 project 後,總會有個機會搬來搬去、移來移去,甚至換電腦,這時若想要把既有的 projects 移到常用的 workspace ,並用 Eclipse > File > Import > Android > Existing Android Code Into Workspace 時,就會出現上述的訊息:Invalid project description. overlaps the location of another project

android_import_projects

解法就只要改用 General > Existing Projects Into Workspace 就行了 :P

2013年8月12日 星期一

使用 ffmpeg 移除影片中的聲音 @ Windows

首先下載 ffmpeg static file:FFmpeg Windows BuildsZeranoe FFmpeg Builds 。

接著享受它快速轉換:

C:\> ffmpeg -i input.mov -vcodec copy -an output.mp4

大概快 2GB 且快六分鐘的影片,很快就轉完,剩 1.8GB

Android 開發筆記 - 解決小米 S2 adb devices 找不到的問題

小米 s2

若要安裝相關驅動程式,可以參考這邊:图文详解小米手机驱动安装 / 驅動程式下載。但如此之後 adb devices 仍是找不到,真是神祕

原本以為只要把"開發人員選項"打開後,就可以找到裝置,但真正關鍵之處在於還要打電話 XD 請播打 *#*#717717#*#* 神秘組織的電話,方可聯絡方丈 *誤*