概述
生成sort\calc的静态库,并生成app1.exe app2.exe
目录结构

CMakeLists.txt 位置以及配置
根CMakeLists.txt
| cmake_minimum_required(VERSION 3.15) |
| project(mulitiple_modules) |
| set(CMAKE_CXX_STANDARD 17) |
| |
| |
| set(LIBPATH ${PROJECT_SOURCE_DIR}/lib) |
| |
| set(EXECPATH ${PROJECT_SOURCE_DIR}/bin) |
| |
| set(HEADPATH ${PROJECT_SOURCE_DIR}/include) |
| |
| set(CALCLIB calc) |
| set(SORTLIB sort) |
| |
| set(APPNAME1 app1) |
| set(APPNAME2 app2) |
| |
| add_subdirectory(calc) |
| add_subdirectory(sort) |
| add_subdirectory(test1) |
| add_subdirectory(test2) |
calc目录下CMakeLists.txt
| cmake_minimum_required(VERSION 3.15) |
| project(sub_modules_calc) |
| set(CMAKE_CXX_STANDARD 17) |
| |
| aux_source_directory(./ SRC) |
| |
| include_directories(${HEADPATH}) |
| |
| set(LIBRARY_OUTPUT_PATH ${LIBPATH}) |
| |
| add_library(${CALCLIB} STATIC ${SRC}) |
sort目录下CMakeLists.txt
| cmake_minimum_required(VERSION 3.15) |
| project(sub_modules_sort) |
| set(CMAKE_CXX_STANDARD 17) |
| |
| aux_source_directory(./ SRC) |
| |
| include_directories(${HEADPATH}) |
| |
| set(LIBRARY_OUTPUT_PATH ${LIBPATH}) |
| |
| add_library(${SORTLIB} STATIC ${SRC}) |
test1目录下CMakeLists.txt
| cmake_minimum_required(VERSION 3.15) |
| project(sub_modules_test1) |
| set(CMAKE_CXX_STANDARD 17) |
| |
| aux_source_directory(./ SRC) |
| |
| include_directories(${HEADPATH}) |
| |
| set(EXECUTABLE_OUTPUT_PATH ${EXECPATH}) |
| |
| link_directories(${LIBPATH}) |
| link_libraries(${CALCLIB}) |
| add_executable(${APPNAME1} ${SRC}) |
test2目录下CMakeLists.txt
| cmake_minimum_required(VERSION 3.15) |
| project(sub_modules_test2) |
| set(CMAKE_CXX_STANDARD 17) |
| |
| aux_source_directory(./ SRC) |
| |
| include_directories(${HEADPATH}) |
| |
| set(EXECUTABLE_OUTPUT_PATH ${EXECPATH}) |
| |
| link_directories(${LIBPATH}) |
| link_libraries(${SORTLIB}) |
| add_executable(${APPNAME2} ${SRC}) |
在跟目录下新建build
| mkdir build |
| cd build |
| # 生成makefiel |
| cmake .. |
| # 生成静态库,exe |
| make |
源代码
include/m_calc.h
| #ifndef M_CALC_H |
| #define M_CALC_H |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| int m_add(const int a,const int b); |
| int m_div(const int a,const int b); |
| int m_mult(const int a,const int b); |
| int m_sub(const int a,const int b); |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif |
include/m_sort.h
| |
| #ifndef M_SORT_H |
| #define M_SORT_H |
| #include<iostream> |
| #include<algorithm> |
| #include<vector> |
| using namespace std; |
| #ifdef __cplusplus |
| extern "C"{ |
| #endif |
| void m_sort(vector<int> &v); |
| void m_insert(vector<int> &v,const int i); |
| #ifdef __cplusplus |
| } |
| #endif |
| #endif |
calc/m_calc.cpp
| #include "m_calc.h" |
| int m_add(const int a,const int b){ |
| return a+b; |
| } |
| int m_div(const int a,const int b){ |
| return a-b; |
| } |
| int m_sub(const int a,const int b){ |
| return a/b; |
| } |
| |
| int m_mult(const int a,const int b){ |
| return a*b; |
| } |
sort/m_sort.cpp
| #include "m_sort.h" |
| |
| void m_sort(vector<int> &v) |
| { |
| sort(v.begin(),v.end(),[](int a,int b)->bool{return a>b;}); |
| } |
| void m_insert(vector<int> &v,const int i) |
| { |
| v.push_back(i); |
| } |
test1/test1.cpp
| #include<iostream> |
| #include"m_calc.h" |
| using namespace std; |
| int main(){ |
| cout<<"test1"<<endl; |
| cout<<m_add(2,2)<<endl; |
| cout<<m_div(10,5)<<endl; |
| cout<<m_mult(3,3)<<endl; |
| cout<<m_sub(9,3)<<endl; |
| return 0; |
| } |
test2/test1.cpp
| #include"m_sort.h" |
| |
| void print_vector(vector<int> &v){ |
| for (size_t i = 0; i < v.size(); i++) |
| { |
| cout<<v[i]<<" "; |
| } |
| cout<<endl; |
| } |
| int main(){ |
| vector<int> v; |
| for (size_t i = 0; i < 50; i++) |
| { |
| m_insert(v,i); |
| } |
| print_vector(v); |
| m_sort(v); |
| print_vector(v); |
| return 0; |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
2023-08-01 Teamcener AWC Solr链接被拒