우분투/x86_64에서 ARM 용 라이브러리 Poco
을 성공적으로 크로스 컴파일했습니다. 이제 과 함께 Poco
을 사용하는 프로그램을 크로스 컴파일하고 있습니다.크로스 컴파일 할 때 cmake CMAKE_FIND_ROOT_PATH 및 CMAKE_INCLUDE_PATH가 루트 파일 시스템을 무시하는 이유는 무엇입니까?
&을 포함하여 대상 파일 시스템에 포함 된 Poco 헤더를 $(SDK_INSTALL_DIR)/filesystem/usr/local/include
에 설치했습니다.
나는 또한 내 호스트 파일 시스템에 Poco
개발 라이브러리를 가지고 있으며, 그 과정에 있습니다. /이 USR/일보다 우선 순위가에 설치 걸립니다 포함 내 프로그램의 CMakeLists.txt
, 내가
find_path(POCO_INCLUDE_PATH "Poco/Net/HTTPClientSession.h" "../include")
MESSAGE(FATAL_ERROR "Poco: " ${POCO_INCLUDE_PATH-NOTFOUND} ":" ${POCO_INCLUDE_PATH})
처럼 포코를 찾고 있어요에서
내가 점점 계속
Poco: :/usr/include
내 호스트의 포코 것 같은데 $ (SDK_INSTALL_DIR)/filesystem이고,/usr/local은 전혀 검색되지 않아야합니다.. 해야
. $(SDK_INSTALL_DIR)/environment-setup \
&& mkdir -p $(BANANA_DIR) \
&& cd $(BANANA_DIR) \
&& CMAKE_INSTALL_PREFIX=$(SDK_INSTALL_DIR)/filesystem/usr/local \
CMAKE_FIND_ROOT_PATH=$(SDK_INSTALL_DIR)/filesystem \
CMAKE_INCLUDE_PATH=$(SDK_INSTALL_DIR)/filesystem:$(SDK_INSTALL_DIR)/filesystem/usr/include:$(SDK_INSTALL_DIR)/filesystem/usr/local/include \
CMAKE_LIBRARY_PATH=$(SDK_INSTALL_DIR)/filesystem/usr/lib:$(SDK_INSTALL_DIR)/filesystem/usr/local/lib \
cmake ..
모두 CMAKE_FIND_ROOT_PATH
및 CMAKE_INCLUDE_PATH
이 우선했다, 그러나 이것은 일어나지 않았다 :
나는 명령을 cmake
을 실행하고 있습니다.
편집 : 나는 내 호스트의 cmake
을 실행 중입니다. 완벽한 세계에서, 이것은 중요하지 않아야하지만, 그것은 내 문제 중 하나라고 생각합니다. 교차 컴파일 툴체인에는 cmake
이 없습니다.
내 find_path()
에 오른쪽 Poco
을 포함하려면 어떻게해야합니까? 다른 플랫폼에서 프로그램을 컴파일해야하기 때문에 CMakeLists.txt에 명시 적 경로를 추가하는 것은 좋지 않은 옵션입니다.
왜 Poco를 수동으로 크로스 컴파일하는 특별한 이유가 있습니까? [Buildroot] (http://buildroot.uclibc.org/)와 같은 프로젝트를 보셨습니까? – yegorich
find_path (... NO_DEFAULT_PATH) 사용해보기 http://www.cmake.org/cmake/help/v2.8.12/cmake.html#command:find_path –
거기에 : 우리가 원활하게 의심 스러울 수있는 벤더 특정 코드가 있습니다. buildroot의 컴파일. 그리고 우리는 커널과 모듈을 포함하여 바이너리로 컴파일되고 사전 설치 된 약 백 개의 다른 패키지를 가지고 있습니다. 그래도 조언 주셔서 감사합니다. –