clion 《cmake自定义静态库后,生成的exe无法运行》

背景

项目生成lib引入,在生成exe过程中无法正常运行

处理办法

让链接器静态链接GCC和C++标准库
set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++")

主CMakeLists.txt

cmake_minimum_required(VERSION 3.28)
project(speech)
# 编译版本
set(CMAKE_CXX_STANDARD 17)
# 让链接器静态链接GCC和C++标准库
set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++")
# 设置可执行文件输出路径
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/bin)
# 自定义变量
set(M_LIB mlib)
set(BASE_INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/include)
set(BASE_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src)
set(BASE_LIB ${CMAKE_CURRENT_SOURCE_DIR}/lib)
# 增加子模块
add_subdirectory(m_lib)
# 头文件包含目录
include_directories(${BASE_INCLUDE})
# 源文件包含目录
aux_source_directory(${BASE_SRC} SRC_LIST)
# 链接静态库
link_directories(${BASE_LIB})
link_libraries(${M_LIB})
# 输出配置
add_executable(speech main.cpp)

子CMakeLists.txt

cmake_minimum_required(VERSION 3.20)
project(${M_LIB})
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
include_directories(${BASE_INCLUDE})
set(LIBRARY_OUTPUT_PATH ${BASE_LIB})
add_library(${M_LIB} STATIC my_lib.cpp)
posted @   一个小笨蛋  阅读(77)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
历史上的今天:
2023-08-02 Teamcenter RAC开发 GoToHelper
2023-08-02 关于Teamcenter RAC开发如何查看Soa调用情况,已经查看反编译源码
点击右上角即可分享
微信分享提示