ruijiege

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

子节点cmake可以使用父节点cmake定义的便变量,但是父节点不能使用子节点定义的变量

生成的库文件是静态库还是动态库的标准是看文件大小,如果太大动态库,小静态库,因为静态库会打包到程序中去,但是动态库可以共享内存

add_subdirectory(calc)需要根据子目录的文件名称添加否则找不到
目录如下

 父CMakeList.txt

cmake_minimum_required(VERSION 3.15)
project(test)
#定义变量
#定义静态库生成的路径
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中CMakeList.txt

cmake_minimum_required(VERSION 3.15)
project(calc)

#搜索所有的源文件变成静态库
aux_source_directory(./ SRC)
# 指定头文件包含的路径
include_directories(${HEADPATH})
# 指定静态库输出路径
set(LIBRARY_OUTPUT_PATH ${LIBPATH})
add_library(${CALCLIB} STATIC ${SRC})

 sort中CMakeList.txt

cmake_minimum_required(VERSION 3.15)
project(sort)

#搜索所有的源文件变成静态库
aux_source_directory(./ SRC)
# 指定头文件包含的路径
include_directories(${HEADPATH})
# 指定静态库输出路径
set(LIBRARY_OUTPUT_PATH ${LIBPATH})
add_library(${SORTLIB} STATIC ${SRC})

 

test1中CMakeList.txt

cmake_minimum_required(VERSION 3.15)
project(test1)

#搜索所有的源文件变成静态库
aux_source_directory(./ SRC)
# 指定头文件包含的路径
include_directories(${HEADPATH})
link_libraries(${CALCLIB})
link_directories(${LIBPATH})
set(EXECUTABLE_OUTPUT_PATH ${EXECPATH})
add_executable(${APPNAME1} ${SRC})

 

test2中CMakeList.txt

cmake_minimum_required(VERSION 3.15)
project(test2)

#搜索所有的源文件变成静态库
aux_source_directory(./ SRC)
# 指定头文件包含的路径
include_directories(${HEADPATH})
link_libraries(${SORTLIB})
link_directories(${HEADPATH})
set(EXECUTABLE_OUTPUT_PATH ${EXECPATH})
add_executable(${APPNAME2} ${SRC})

 

posted on 2023-08-25 14:58  哦哟这个怎么搞  阅读(102)  评论(0编辑  收藏  举报