私はパケット スニファを作成しようとしていますが、ある時点でクロス プラットフォームにするつもりなので、CMake を使用してビルド構成を処理することにしました。Pcap (1.4) および wxWidgets (2.9.5) ライブラリを利用しており、これまでのところ、CMake を使用して XCode 5.0.1 および Unix Makefile のビルド ファイルを生成することができました。
これらのライブラリをシステム ディレクトリにインストールするのではなく、静的ライブラリ (*.a) を使用し、移植性と利便性の両方のために実行可能ファイルにバンドルしています。コンパイルします)。私のファイル構造は次のようになります。
project root
build/
src/
main.cc
CMakeLists.txt
libpcap.a
libwx_osx_cocoa_static.a
私は自分のマシンで Pcap と wxWidgets の両方をコンパイルしました (具体的には、XCode プロジェクトがあり、静的ライブラリをビルドするため、当面は wxCocoa です)。
CMakeLists.txt は次のようになります (あまり堅牢ではないことがわかりました。動作させたいだけです)。
cmake_minimum_required (VERSION 2.6)
project (PacketCap)
add_executable(PacketCap main.cc)
target_link_libraries(PacketCap ${CMAKE_SOURCE_DIR}/libpcap.a)
target_link_libraries(PacketCap ${CMAKE_SOURCE_DIR}/libwx_osx_cocoa_static.a)
そしてmain.cc:
#include <iostream>
#include "pcap.h"
#include <wx/string.h>
int main(int argc, const char * argv[]) {
char *dev, errorbuf[PCAP_ERRBUF_SIZE];
dev = pcap_lookupdev(errorbuf);
if (!dev) {
std::cout << errorbuf << std::endl;
return -1;
}
std::cout << dev << std::endl;
wxPuts(wxT("Import test"));
return 0;
}
wx インポートを削除すると、コンパイルされ、pcap で期待どおりに動作します。ただし、wx 行を追加すると、make の実行後に次のエラーが発生します。
fatal error: 'wx/string.h' file not found
wxWidgets ライブラリをインポートできるようにこれを修正する方法について何か提案はありますか? その他の関連情報を提供できることをうれしく思います。