要使用CMake创建一个C++工程,并在其中调用C语言函数以打印“C hello!”,你可以按照以下步骤操作:
1. 项目目录结构
首先,确保你的项目目录结构如下: - CPlusPlusWithCLibrary
- ├── CMakeLists.txt
- └── src
- ├── main.cpp
- ├── example.c
- └── example.h
复制代码
2. C语言代码
src/example.c - #include <stdio.h>
- void print_c_hello() {
- printf("C hello!\n");
- }
复制代码
src/example.h - #ifndef EXAMPLE_H
- #define EXAMPLE_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- void print_c_hello();
- #ifdef __cplusplus
- }
- #endif
- #endif // EXAMPLE_H
复制代码
3. C++代码
src/main.cpp - #include <iostream>
- #include "example.h"
- int main() {
- std::cout << "Calling C function from C++ code:" << std::endl;
- print_c_hello(); // 调用C语言函数
- return 0;
- }
复制代码
4. 更新CMakeLists.txt
为了让CMake正确识别并处理C语言源文件,你可以在CMakeLists.txt文件中明确指定目标的语言。以下是优化后的CMakeLists.txt文件:
CMakeLists.txt - cmake_minimum_required(VERSION 3.10)
- project(CPlusPlusWithCLibrary CXX C)
- # 指定C++标准
- set(CMAKE_CXX_STANDARD 11)
- set(CMAKE_CXX_STANDARD_REQUIRED True)
- # 指定C语言标准
- set(CMAKE_C_STANDARD 99)
- set(CMAKE_C_STANDARD_REQUIRED True)
- # 添加C语言源文件
- add_library(c_library STATIC src/example.c)
- # 添加C++源文件
- add_executable(my_program src/main.cpp)
- # 链接C语言库到C++可执行文件
- target_link_libraries(my_program PRIVATE c_library)
- # 添加头文件搜索路径
- target_include_directories(my_program PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src)
复制代码
5. 配置和构建项目
在项目根目录下,执行以下命令来配置和构建项目: - mkdir build
- cd build
- cmake ..
- cmake --build .
复制代码
6. 运行程序
编译完成后,你可以运行生成的可执行文件:
总结
- 添加语言类型:在project命令中指定项目支持C和C++语言。
- 设置标准:在CMakeLists.txt中明确设置C和C++的标准。
- 添加库:使用add_library创建C语言库,并用target_link_libraries将其链接到C++可执行文件。
这样,CMake就能正确识别C语言源文件,并将其链接到C++项目中。
演示
|