cmake -DCMAKE_TOOLCHAIN_FILE


cmake交叉編譯時提示如下錯誤

 cc: Can't specify -P, -C, -E, -c or -S with -o and have multiple files

主要是QNX需要指定-Wp,MD xxx;沒有-Wp會提示如上錯誤。

分析可能是環境所致,可考慮使用xxx.cmake聲明編譯環境,然后生成makefile;cmake可以通過參數CMAKE_TOOLCHAIN_FILE指定關聯對應的環境文件;

比如執行cmake -DCMAKE_TOOLCHAIN_FILE=../qnx.cmake ..

qnx.cmake

# This is required. target system name
SET(CMAKE_SYSTEM_NAME QNX)

# this one not so much
SET(CMAKE_SYSTEM_VERSION 7)

# specify the cross compiler
#SET(CMAKE_C_COMPILER $ENV{TOOLCHAIN_ROOT}/aarch64-unknown-nto-qnx7.0.0-gcc-5.4.0)
#SET(CMAKE_CXX_COMPILER $ENV{TOOLCHAIN_ROOT}/aarch64-unknown-nto-qnx7.0.0-g++-5.4.0)
SET(CMAKE_C_COMPILER $ENV{QNX_HOST}/usr/bin/qcc)
SET(CMAKE_CXX_COMPILER $ENV{QNX_HOST}/usr/bin/qcc)
set(CMAKE_C_COMPILER_TARGET gcc_ntoaarch64le)
set(CMAKE_CXX_COMPILER_TARGET gcc_ntoaarch64le)

# where is the target environment
#SET(CMAKE_FIND_ROOT_PATH /work/qnx7/target/qnx7/)

# search for programs in the build host directories
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)

# for libraries and headers in the target directories
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

# configure Boost and Qt
#SET(QT_QMAKE_EXECUTABLE /opt/qt-embedded/qmake)
#SET(BOOST_ROOT /opt/boost_arm)

# OPENSSL_FOUND OPENSSL_INCLUDE_DIR OPENSSL_LIBRARIES
#SET(OPENSSL_ROOT_DIR /work/usr/openssl)
#SET(OPENSSL_USE_STATIC_LIBS TRUE)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM