CMake and wxWidgets 2.9.5



我正在尝试编写数据包嗅探器,并决定使用 CMake 来处理构建配置,因为在某些时候我打算让它跨平台。它利用了Pcap(1.4)和wxWidgets(2.9.5)库,到目前为止,我已经能够使用CMake为XCode 5.0.1和Unix Makefiles生成构建文件。

我没有将这些库安装到系统目录中,而是使用静态库(*.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 库的任何建议?我很乐意提供任何其他相关信息!

下面是一个最小的 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

最新更新