(_add_library): No SOURCES given to target生成静态链接库的一些奇怪操作

一个demo,生成静态链接库的源文件树结构
项目树

1.生成静态链接库

CMakeLists.txt文件

# 设置最低版本要求
cmake_minimum_required(VERSION 2.8.13)

# 定义项目名称
project(MyProject)

# 指定 C++ 标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)

# 设置输出路径
set(OUTPATH  ../bin)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${OUTPATH})

# 搜索当前目录下 `lib` 子目录中的所有 `.cpp` 文件

#aux_source_directory(.. SOURCE_FILE)
file(GLOB SOURCE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/lib/*.cpp")

# 添加静态库
add_library(mymath STATIC ${SOURCE_FILE})

# 包含头文件目录
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/include")

静态链接库要在lib目录下,可以在file(GLOB SOURCE_FILE “${CMAKE_CURRENT_SOURCE_DIR}/lib/*.cpp”)中找到源文件,换成别的目录找不到(_add_library): No SOURCES given to target出现这个错误
可以试试修改为找文件的其他命令

#搜索上一级目录的源文件
aux_source_directory(.. SOURCE_FILE)
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR SOURCE_FILE)

2。动态库生成

# 设置输出路径
set(OUTPATH  ../bin)
#用作动态库路径
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPATH})
#只能用作静态库生成路径
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${OUTPATH})
# 添加共享库
add_library(mymath SHARED ${SOURCE_FILE})

3.生成动态库并链接

在这里插入图片描述

cmake_minimum_required(VERSION 3.20.0)

project(MyProject)

# 指定 C++ 标准
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED True)

# 设置输出路径
set(OUTPATH ../lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPATH})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${OUTPATH})

# 搜索当前目录下 `src` 子目录中的所有 `.cpp` 文件
file(GLOB SOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp")

# 添加共享库
add_library(mymath SHARED ${SOURCE_FILES})

# 包含头文件目录
target_include_directories(mymath PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")

# 假设 main.cpp 是主入口点
add_executable(program main.cpp)

# 链接到 mymath 共享库
target_link_libraries(program PUBLIC mymath)

# 注意:不再需要 link_directories 和重复的 target_link_libraries 调用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值