这并不容易,但我采取了这些步骤来让它工作......
1) 下载并解压最新的 GSL
2)gsl目录下./configure
--disable-shared --disable-dependency-tracking CFLAGS="-DGSL_C99_INLINE -g -O2"
3) 在 Xcode 中创建一个 Cocoa Touch 静态库项目。
4) 将以下标头复制到项目中:config.h, build.h, gsl_machine.h
5) 找到您想在项目中使用的功能。将这些 .c 文件复制到您的项目中。
6) 然后跟踪该函数以查看它调用的其他函数,一直到底部。
7) 将这些函数所在的所有 .c 文件复制到您的项目中。
8) 将这些函数定义所需的所有 .h 文件复制到您的项目中。
9) 有一种更优雅的方法可以做到这一点,但对我来说,我只是采取了简单的路线并将#include <gsl/xxxxx.h> 语句更改为#include "xxxxxx.h"。注释掉您实际上不需要的任何 #includes。
10) 那些.c 文件中不需要的任何功能,您可以删除它们以减少您需要使用的其他包含的数量。您可以直接删除它们,但我建议将 #if 0 和 #endif 放在它们周围。以防万一您错过了某些内容并需要稍后包含它们。
11) 构建并检查错误。如果您缺少某个函数,请包含该函数的 .c 文件,冲洗,重复。
我需要在我的项目中包含gsl_cdf_tdist_P(),当我跟踪所有方法调用时,这是所有所需函数的列表。 (后面带 * 的函数都是已经遇到过的,所以我不需要追查):
gsl_cdf_tdist_P
cornish_fisher
poly_eval
gsl_cdf_ugaussian_P
gauss_small
gauss_medium
get_del
gauss_large
get_del*
beta_inc_AXPY
gsl_sf_gamma_inc_Q
gsl_sf_gamma_inc_Q_e
gamma_inc_P_series
gamma_inc_D
gsl_sf_lngamma_e
lngamma_1_pade
lngamma_2_pade
lngamma_lanczos
lngamma_sgn_0
lngamma_sgn_sing
gsl_sf_lnfact_e
gsl_sf_lngamma_e*
gsl_sf_psi_int_e
gsl_sf_psi_1_int_e
gsl_sf_psi_n_e
gsl_sf_psi_e
psi_x
cheb_eval_e*
gsl_sf_psi_1_e
psi_n_xg0
gsl_sf_psi_e*
gsl_sf_hzeta_e
gsl_sf_lnfact_e*
gsl_sf_exp_mult_err_e
gsl_sf_hzeta_e*
gsl_sf_lnfact_e*
gsl_sf_exp_mult_err_e*
lngamma_lanczos*
gsl_sf_gammastar_e
gsl_sf_lngamma_e*
gsl_sf_exp_err_e
cheb_eval_e*
gammastar_ser
gsl_sf_exprel_n_CF_e
exprel_n_CF
gamma_inc_Q_asymp_unif
gsl_sf_log_1plusx_mx_e
cheb_eval_e*
gsl_sf_erfc_e
cheb_eval_e*
gamma_inc_Q_series
gamma_inc_Q_CF
gamma_inc_D*
gamma_inc_F_CF
gsl_pow_3
gamma_inc_Q_large_x
gamma_inc_D*
gamma_inc_Q_CF*
gamma_inc_P_series*
gsl_sf_gamma_inc_P
gsl_sf_gamma_inc_P_e
gamma_inc_P_series*
gamma_inc_Q_asymp_unif*
gamma_inc_Q_CF*
gamma_inc_Q_large_x*
gamma_inc_P_series*
gsl_sf_lnbeta
gsl_sf_lnbeta_e
gsl_sf_lnbeta_sgn_e
isnegint
gsl_sf_gammastar_e*
gsl_sf_log_1plusx_e
cheb_eval_e*
gsl_sf_lngamma_sgn_e
lngamma_1_pade*
lngamma_2_pade*
lngamma_lanczos*
lngamma_sgn_0*
lngamma_sgn_sing*
beta_cont_frac