1

私はパケット スニファを作成しようとしていますが、ある時点でクロス プラットフォームにするつもりなので、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 ライブラリをインポートできるようにこれを修正する方法について何か提案はありますか? その他の関連情報を提供できることをうれしく思います。

4

1 に答える 1

1

以下は最小限の wxWidgets の例です:

CMAKE_MINIMUM_REQUIRED(VERSION 2.8.7)
PROJECT(wxTestbed)

FIND_PACKAGE(wxWidgets REQUIRED html adv core base net aui xrc qa richtext )
INCLUDE(${wxWidgets_USE_FILE})

ADD_EXECUTABLE(wxTestbed WIN32
    src/main.cpp)

TARGET_LINK_LIBRARIES(wxTestbed ${wxWidgets_LIBRARIES})

が見つからないため、ヘッダー ファイルが見つかりませんINCLUDE(${wxWidgets_USE_FILE})

私の最小限の wxWidgets の例も見てください: https://bitbucket.org/Vertexwahn/cmakedemos/src/a22a956e1e4b/wxTestbed?at=default

于 2013-11-14T13:42:37.357 に答える