如何使用cmake编译cpp
时间: 2023-11-07 16:10:11 浏览: 51
使用 CMake 编译 C++ 程序的步骤如下:
1. 在你的项目根目录下创建一个名为 CMakeLists.txt 的文件。
2. 在 CMakeLists.txt 文件中设置 CMake 版本和项目名称。
3. 使用 add_executable 命令将你的源文件添加到项目中。
4. 使用 target_link_libraries 命令将需要的库链接到项目中。
5. 在命令行中进入项目目录,并执行以下命令:
```
mkdir build
cd build
cmake ..
make
```
6. 编译完成后,在 build 目录下可以找到可执行文件。
注意:执行以上步骤前需要安装 cmake 工具。
相关问题
如何使用cmake编译ndk
使用CMake编译NDK需要以下步骤:
1. 下载并安装Android Studio。
2. 安装NDK。在Android Studio中,打开SDK Manager,然后在SDK Platforms选项卡下找到NDK,勾选并安装。
3. 在你的Android项目中创建一个CMakeLists.txt文件,该文件定义了CMake编译时的构建配置。例如,以下是一个简单的CMakeLists.txt文件:
```
cmake_minimum_required(VERSION 3.4.1)
add_library(mylib SHARED
src/main/cpp/mylib.cpp)
```
这个CMakeLists.txt文件指定了我们要构建一个名为mylib的共享库,该库由src/main/cpp/mylib.cpp文件编译而成。
4. 在你的Android项目中创建一个build.gradle文件,并在文件中定义CMake构建配置。例如,以下是一个简单的build.gradle文件:
```
android {
compileSdkVersion 26
defaultConfig {
applicationId "com.example.myapplication"
minSdkVersion 21
targetSdkVersion 26
versionCode 1
versionName "1.0"
externalNativeBuild {
cmake {
cppFlags "-std=c++11"
arguments "-DANDROID_PLATFORM=android-21"
}
}
}
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
```
这个build.gradle文件定义了我们的应用程序的构建配置,并指定了CMake构建配置所需的一些参数。
5. 配置Android Studio以使用CMake构建你的应用程序。在Android Studio的菜单栏中选择File > Project Structure,然后在左侧面板中选择"app"。然后在右侧面板中选择"Build Types"选项卡,选择"ndkBuild"或者"cmake",并指定你的CMakeLists.txt文件的路径。
6. 点击"Sync Project with Gradle Files"按钮,这将下载并同步所需的库和依赖项。
7. 现在你可以构建和运行你的应用程序,Android Studio将自动使用CMake编译你的应用程序。
使用cmake编译cjson ndk
好的,这是一个关于使用CMake编译cjson和NDK的问题。以下是详细步骤:
1. 下载cjson源代码并解压缩。
2. 在项目根目录下创建一个CMakeList.txt文件,内容如下:
```
cmake_minimum_required(VERSION 3.4.1)
# 添加cjson源代码目录为库文件
add_subdirectory(cjson)
# 设置库文件名称
set(LIB_NAME cjson)
# 添加jni目录下的源文件
file(GLOB_RECURSE JNI_SRC src/main/cpp/*.cpp)
# 添加头文件目录
include_directories(${CMAKE_SOURCE_DIR}/cjson)
# 生成动态库
add_library(${LIB_NAME} SHARED ${JNI_SRC})
# 链接cjson库文件
target_link_libraries(${LIB_NAME} cjson)
```
3. 在cjson目录下创建一个CMakeLists.txt文件,内容如下:
```
# 设置cjson源代码目录
set(CJSON_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR})
# 添加cjson源文件
file(GLOB CJSON_SRC ${CJSON_SRC_DIR}/*.c)
# 生成静态库
add_library(cjson STATIC ${CJSON_SRC})
```
4. 配置NDK环境变量,并执行以下命令:
```
mkdir build
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=$NDK_HOME/build/cmake/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a -DANDROID_NATIVE_API_LEVEL=21 ..
make
```
以上命令中,-DCMAKE_TOOLCHAIN_FILE 指定了NDK的工具链路径,-DANDROID_ABI 指定了编译的ABI,-DANDROID_NATIVE_API_LEVEL 指定了目标SDK版本。
5. 编译完成后,会在build目录下生成一个lib目录,其中包含编译生成的动态库和静态库。
希望这能帮到你。