干货!!跨平台编译(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

应用

构建工程目录

image-20210624135709262

image-20210624140104929

编写程序源码

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

image-20210625144952526

image-20210625145024426

image-20210625145039064

image-20210625145057855

image-20210625145111252

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

使用说明

image-20210625145707260

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值