2013-10-29 34 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