admin管理员组

文章数量:1794759

干货!!跨平台编译(Windows/Linux/Android/MacOS/iOS)

干货!!跨平台编译(Windows/Linux/Android/MacOS/iOS)

认识CMake

  • CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。

  • 能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。

  • CMake 的组态档取名为 CMakeLists.txt。

安装

下载cmake地址 Download | CMake

Windows版本

安装直接运行EXE

Linux/MAC版本:

cmake-..*tar.gz为下载下来的源码包

tar xvf cmake-..*.tar.gz

cd cmake-..*

./bootstrap

make

make install

应用 构建工程目录

编写程序源码

hello.h

#if !defined(__GNUC__) && defined(TEST_EXPORTS) #define TEST_API __declspec(dllexport) #elif !defined(__GNUC__) && !defined(TEST_IMPORTS_IGNORE) #define TEST_API __declspec(dllimport) #else #define TEST_API #endif ​ TEST_API void print_hello_world(void);

hello.c

#include ​ void print_hello_world(void) {   printf("hello world!\\n"); }

main.c

#include "hello.h" ​ int main() {   print_hello_world();   return 0; } 编写编译脚本 CMakeLists.txt cmake_minimum_required(VERSION 3.5) ​ set(PROJECT_NAME mytest) set(LIB_NAME hello) ​ #####   设置编译32位工程   ##### ​ IF (APPLE)   ## mac/ios平台编译64位库     set(USE_32BITS 0) ELSE() set(USE_32BITS 1) ENDIF() ​ ####   设置编译参数   ##### ​ if(USE_32BITS) message(STATUS "Compiling project using 32 bits") set(CMAKE_C_FLAGS   "${CMAKE_C_FLAGS}   -m32") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32") endif(USE_32BITS) ​ ####   头文件目录   ##### ​ include_directories(${PROJECT_SOURCE_DIR}/include) ​ ####   windows平台设置dllexport,兼容头文件   ##### ​ IF(WIN32) add_definitions(-DTEST_EXPORTS) ENDIF(WIN32) ​ ####   编译动态库   ##### ​ add_library(${LIB_NAME} SHARED ${PROJECT_SOURCE_DIR}/src/hello.c ) ​ ####   编译程序   ##### ​ add_executable(${PROJECT_NAME} ${PROJECT_SOURCE_DIR}/src/main.c) target_link_libraries(${PROJECT_NAME}       ${LIB_NAME} ) build.sh

build.sh源码下载地址:跨平台编译脚本build.sh_.sh文件如何编译运行-Unix文档类资源-CSDN下载

使用说明

本文标签: 干货平台windowsLinuxMacOS