我正在尝试编写一个数据包嗅探器,并决定使用 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 库的任何建议?我很乐意提供任何其他相关信息!