交叉编译时cmake忽略包含目录

时间:2013-05-03 17:40:52

标签: linux cmake

我很困惑,希望得到你的帮助。

我正在交叉编译需要ifaddrs.h的项目,但无论我如何尝试指定文件的位置,它都找不到它。它位于/usr/include/ifaddrs.h,我使用下面的代码试图指出它。 (当然这是主机系统的文件,但在这种情况下无关紧要。我还将文件放在目标系统包含目录:/tmp/toolchain/include中,没有不同的结果)。 message电话会打印/usr/include

但是,如果我将文件放在${CMAKE_CURRENT_SOURCE_DIR}/../include中 找到了。它就在那里,我可以看到它 - 为什么不用cmake?

FIND_FILE( IFADDRS ifaddrs.h PATH /usr/include )
get_filename_component(if_path ${IFADDRS} PATH)
message( "IFADDRS = " ${if_path} )
include_directories( ${if_path} )
include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/../include )

将上面的代码更改为:

include_directories( BEFORE SYSTEM /usr/include )

并且运行make VERBOSE=1会给出:

[ 18%] Building C object CMakeFiles/cpcommon_lib.dir/eui48.c.o
/tmp/toolchain/arm-linux-uclibc/bin/gcc  -DPJ_AUTOCONF=1 -DPJ_IS_BIG_ENDIAN=0 -DPJ_IS_LITTLE_ENDIAN=1 -I/home/bp/MySnapCam/projects/Communication/trunk/cpcommon/src/../include -I/home/bp/MySnapCam/projects/Communication/trunk/cpcommon/src/../../pjproject/pjlib-util/include -I/home/bp/MySnapCam/projects/Communication/trunk/cpcommon/src/../../pjproject/pjlib/include -I/home/bp/MySnapCam/projects/Communication/trunk/cpcommon/src/../../pjproject/pjnath/include -I/usr/include/w32api -I/usr/X11R6/include -I/usr/include/X11 -I/usr/pkg/include -I/opt/csw/include -I/opt/include -I/usr/openwin/include -I/home/bp/MySnapCam/projects/Communication/trunk/cpcommon/src/../../cjson    -o CMakeFiles/cpcommon_lib.dir/eui48.c.o   -c /home/bp/MySnapCam/projects/Communication/trunk/cpcommon/src/eui48.c
In file included from /home/bp/MySnapCam/projects/Communication/trunk/cpcommon/src/eui48.c:26:
/home/bp/MySnapCam/projects/Communication/trunk/cpcommon/src/impl/eui48_unix.c:14:21: ifaddrs.h: No such file or directory

包含路径中没有/usr/include/。它也不在flags.make文件中。

0 个答案:

没有答案