Water's Home

Just another Life Style

0%

CMake & Arm Cross compilation based Windows systems (Visual Studio)

CMakeLists.txt

cmake_minimum_required(VERSION 3.12)
project(network_information)

SET(CMAKE_SYSTEM_NAME Linux)

add_definitions(“-std=c++17”)

specify the cross compiler

SET(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
SET(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++)

if(${CMAKE_HOST_SYSTEM_NAME} MATCHES “Windows”)
set(BOOST_ROOT “C:/MinGW/msys/1.0/home/d/boost_1_68_0”)
else()
set(BOOST_ROOT /root/Downloads/boost_1_68_0)
endif()

set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_MULTITHREADED ON)

include_directories(sdk/inc)
link_directories(“sdk/lib”)

add_executable(network_information
network_information.cpp
)
TARGET_LINK_LIBRARIES(network_information “-lpthread” “-ldl” “-lpos” “-lrt” “-lpng” “-liconv” “-lfreetype” “-lz”)

GNUlinux_config.cmake

set(GNULINUX_PLATFORM ON)
set(CMAKE_SYSTEM_NAME “Linux”)
set(CMAKE_SYSTEM_PROCESSOR “arm”)

if(NOT DEFINED ENV{NE10_LINUX_TARGET_ARCH})
set(NE10_LINUX_TARGET_ARCH “armv7”)
else()
set(NE10_LINUX_TARGET_ARCH $ENV{NE10_LINUX_TARGET_ARCH})
endif()

if(NE10_LINUX_TARGET_ARCH STREQUAL “armv7”)
set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++)
set(CMAKE_ASM_COMPILER arm-linux-gnueabihf-as)
find_program(CMAKE_AR NAMES “arm-linux-gnueabihf-ar”)
find_program(CMAKE_RANLIB NAMES “arm-linux-gnueabihf-ranlib”)
elseif(NE10_LINUX_TARGET_ARCH STREQUAL “aarch64”)
set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)
set(CMAKE_ASM_COMPILER aarch64-linux-gnu-as)
find_program(CMAKE_AR NAMES “aarch64-linux-gnu-ar”)
find_program(CMAKE_RANLIB NAMES “aarch64-linux-gnu-ranlib”)
endif()

mark_as_advanced(CMAKE_AR)
mark_as_advanced(CMAKE_RANLIB)

CMakeSettings.json

{
“configurations”: [
{
“environments”: [
{
“MINGW64_ROOT”: “C:\\MinGW\\msys\\1.0\\home\\d\\gcc-linaro-7.3.1-2018.05-i686-mingw32_arm-linux-gnueabihf”,
“BIN_ROOT”: “${env.MINGW64_ROOT}\\bin”,
“FLAVOR”: “x86_64-w64-mingw32”,
“TOOLSET_VERSION”: “7.3.0”,
“PATH”: “${env.MINGW64_ROOT}\\bin;${env.MINGW64_ROOT}\\..\\usr\\local\\bin;${env.MINGW64_ROOT}\\..\\usr\\bin;${env.MINGW64_ROOT}\\..\\bin;${env.PATH}”,
“INCLUDE”: “${env.INCLUDE};${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION};${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION}\\tr1;${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION}\\${env.FLAVOR}”,
“environment”: “mingw_64”
}
],
“name”: “Mingw64-Release”,
“generator”: “Ninja”,
“configurationType”: “Release”,
“inheritEnvironments”: [
“mingw_64”
],
“buildRoot”: “${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}”,
“installRoot”: “${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}”,
“cmakeCommandArgs”: “”,
“buildCommandArgs”: “-v”,
“ctestCommandArgs”: “”,
“intelliSenseMode”: “linux-gcc-x64”,
“variables”: [
{
“name”: “CMAKE_TOOLCHAIN_FILE”,
“value”: “GNUlinux_config.cmake”
},
{
“name”: “CMAKE_C_COMPILER”,
“value”: “${env.BIN_ROOT}\\arm-linux-gnueabihf-gcc.exe”
},
{
“name”: “CMAKE_CXX_COMPILER”,
“value”: “${env.BIN_ROOT}\\arm-linux-gnueabihf-g++.exe”
}
]
}
]
}