1.問題出現
我想在qt里面實現交叉編譯,但是qt里面的經常找不到頭文件,很煩人,所以我決定用vccode+cmake進行交叉編譯開發。
2.問題解決
所以需要實現一個Cmake的模板:
# 設置工程名稱 project (Fire_control) # 設置可執行文件名稱 set(MY_TARGET Fire_test) # 需要鏈接的動態鏈接庫 set(EXTRA_LIBS libpthread-2.19-2014.07.so ) # CMAKE最小版本 cmake_minimum_required (VERSION 2.6) # 設置目標平台系統 set(CMAKE_SYSTEM_NAME Linux) # 設置交叉編譯庫路徑 set(CMAKE_FIND_ROOT_PATH /usr/arm-linux-gnueabi/lib /usr/arm-linux-gnueabi/include /usr/local/arm/arm-linux-gnueabihf-4.9) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)#只在交叉編譯庫路徑中尋找 set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) # 設置交叉編譯器 set(CMAKE_C_COMPILER /usr/local/arm/arm-linux-gnueabihf-4.9/bin/arm-linux-gnueabihf-gcc) set(CMAKE_CXX_COMPILER /usr/local/arm/arm-linux-gnueabihf-4.9/bin/arm-linux-gnueabihf-g++) set(CMAKE_C_EXTENSIONS "-pipe -g -Wall -W -fPIE") set(CMAKE_CXX_EXTENSIONS "-pipe -g -Wall -W -fPIE") #設置執行文件輸出目錄 set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) #設置庫輸出路徑 set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) message("++++++++++++++Start Build+++++++++++++++++") # 添加頭文件目錄 include_directories(${PROJECT_SOURCE_DIR}/HARDWARE/inc ${PROJECT_SOURCE_DIR}/COMMON/inc ) # 添加源文件目錄 aux_source_directory(${PROJECT_SOURCE_DIR}/HARDWARE/src HARDWARESRC) aux_source_directory(${PROJECT_SOURCE_DIR}/COMMON/src COMMONSRC) aux_source_directory(${PROJECT_SOURCE_DIR}/USER USRSRC) # 添加子目錄 子目錄里面放一些別的編譯好的模塊 #ADD_SUBDIRECTORY(src) # 鏈接庫搜索路徑 link_directories(/usr/local/arm/arm-linux-gnueabihf-4.9/arm-linux-gnueabihf/libc/lib/arm-linux-gnueabihf/) # 添加動態庫 link_libraries(${EXTRA_LIBS}) # 添加可執行文件(可執行文件名 [配置] 源文件) add_executable(${MY_TARGET} ${USRSRC} ${HARDWARESRC} ${COMMONSRC} ) # 執行文件鏈接屬性 TARGET_LINK_LIBRARIES(${MY_TARGET} ${EXTRA_LIBS})
工程分支如下:
zqh@linux:~/cmake_PROJ/fire_protection$ tree
.
├── bin
│ └── Fire_test
├── build
├── CMakeLists.txt
├── COMMON
│ ├── inc
│ │ ├── alt_functions.h
│ │ ├── ename.c.inc
│ │ ├── error_functions.h
│ │ ├── get_num.h
│ │ ├── mycommon.h
│ │ └── tlpi_hdr.h
│ └── src
│ ├── alt_functions.c
│ ├── error_functions.c
│ └── get_num.c
├── HARDWARE
│ ├── inc
│ │ ├── gpio.h
│ │ ├── gps.h
│ │ ├── mytcp.h
│ │ └── uart.h
│ └── src
│ ├── gpio.c
│ ├── gps.c
│ ├── mytcp.c
│ └── uart.c
├── LIB
├── README.md
├── SYSTEM
└── USER
└── main.c
最后我的工程github地址:https://github.com/zhen8838/v3s_fire_control