2013-10-29 43 views
1

我試圖編寫一個數據包嗅探器,並決定使用CMake來處理構建配置,因爲在某些時候我打算讓它成爲跨平臺。它利用Pcap(1.4)和wxWidgets(2.9.5)庫,到目前爲止,我已經能夠使用CMake爲XCode 5.0.1和Unix Makefiles生成構建文件。CMake和wxWidgets 2.9.5

與其將這些庫安裝到系統目錄中,我使用靜態庫(* .a)並將它們與可執行文件捆綁在一起以實現便攜性和便利性,因爲此時它只需要在OS X上運行我的教授可以編譯它)。我的文件結構如下所示:

project root 
    build/ 
    src/ 
     main.cc 
     CMakeLists.txt 
     libpcap.a 
     libwx_osx_cocoa_static.a 

我編譯都PCAP和wxWidgets的(特別wxCocoa暫且因爲它有一個XCode項目,並會建立靜態庫),我的機器上。

的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庫有什麼建議?我很樂意提供任何其他相關信息!

回答

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