Apple Open Source开发人员库

时间:2012-07-09 15:37:13

标签: c macos cmake

最近我遇到了一个问题,我正在寻找一个特定的头文件。我无法找到它,直到我在谷歌搜索中偶然发现它来源于我的网站:

http://opensource.apple.com/release/mac-os-x-1068/

我的问题:这些项目应该单独下载,一次一个,在OSX上使用,还是应该已经包含在OSX的一些开发人员包中?我是一个新的OSX用户,我现在知道的是我在盒子上有xcode,但似乎缺少一些我的代码(给我)的库。

以下是我的cmake文件:

project(myproject)
cmake_minimum_required(VERSION 2.8)
SET(CMAKE_BUILD_TYPE debug)
SET(CMAKE_C_FLAGS_DEBUG "-g -fPIC -O0 -pipe -std=c99")
SET(CMAKE_VERBOSE_MAKEFILE TRUE)
file(GLOB HEADER_LIST ./include/*.h)
include_directories(./include)
add_executable(${PROJECT_NAME} ${SRC_LIST} ${HEADER_LIST})
target_link_libraries(${PROJECT_NAME} -lpcap)

我的源文件有

#include <net/bpf.h>
#include <pcap.h>

然而,我试图使用应该在pcap中未定义的结构时遇到一些错误。我应该从这个苹果开源库中单独拉出pcap,还是作为更大包装的一部分?

由于

3 个答案:

答案 0 :(得分:3)

编辑:您的问题是您依赖于私有的内部数据结构。未提供pcap-int.h,因为它不是公共API的一部分。


/usr/include中提供了大多数库标题(包括pcap),但通常是从开发人员SDK链接它们,以便您可以控制正在构建的特定版本。要使用cmake包含并链接正确的标头和库,通常使用CMAKE_OSX_SYSROOT变量。您可以使用CMAKE_OSX_DEPLOYMENT_TARGET控制部署目标。例如,这是我的旧版本:

set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.5.sdk")
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.4)

最新版本的Xcode不再位于/Developer,因此您需要指向/Applications/Xcode.app。您可以使用以下方式获取正确的路径:

xcode-select -print-path

并非直接在SDK中提供opensource.apple.com上的所有内容。有些东西是私人的。你可以从opensource.apple.com安装它们,虽然我经常发现它们不能正确地构建那种方式(你经常最终不得不安装Apple的许多其他软件包,这会让人头疼)。如果你需要这样的东西,那么安装“普通”版本并将其静态链接到你的程序中往往要容易得多。

但是pcap应该可以正常工作。你实际看到了什么问题?

答案 1 :(得分:1)

它们不一定“用于OSX”,它们 MacOS X.MacOS X的核心是Darwin,Apple通过{{3}提供Darwin的源代码}。您可以查看这些项目,了解达尔文的工作原理。您可以修改它们并构建自己的Darwin版本。如果您发现它适用,您可以在自己的项目中使用这些代码(根据您正在查看的任何组件所附的许可条款)。

答案 2 :(得分:1)

发布OS X时没有构建组件所需的头文件。 vanilla 10.7 OS X甚至没有/usr/include目录。下载Xcode是第一步。然后,您需要在Xcode中安装Command Line Tools选项(Preferences - &gt; Downloads - &gt; Components)来安装标头,或者您需要确保项目的构建系统使用Xcode提供的SDK。如果您不需要Xcode IDE,您现在也可以从Apple Developer Connection网站单独下载Xcode 4.3的Command Line Tools组件。