gpt4 book ai didi

c - 在 cmake 中将静态库链接到 exe(在 Linux 上)

转载 作者:太空宇宙 更新时间:2023-11-04 03:33:07 25 4
gpt4 key购买 nike

我有以下 CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)
project(cruceGame)

set(INCLUDE_PATH
src/
src/cli
src/gameProtocol
src/irc
src/libCruceGame
src/networking)

set(cruceGame_SOURCES
src/singlePlayerCurses/singlePlayerCurses.c
src/main.c)

file(GLOB libCruceGame_SOURCES "src/libCruceGame/*.c")

file(GLOB libIrc_SOURCES "src/irc/*.c")

file(GLOB libNetworking_SOURCES "src/networking/*.c")

file(GLOB libGameProtocol_SOURCES "src/gameProtocol/*.c")

file(GLOB libCli_SOURCES "src/cli/*.c")

set(COMPILE_FLAGS "-std=gnu99 -DGAME_HELP_MANUAL")
set(LINK_FLAGS "-lncursesw -lpthread")

include_directories(${INCLUDE_PATH})

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMPILE_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LINK_FLAGS}")

add_library(CruceGame STATIC ${libCruceGame_SOURCES})
add_library(Irc STATIC ${libIrc_SOURCES})
add_library(Networking STATIC ${libNetworking_SOURCES})
add_library(GameProtocol STATIC ${libGameProtocol_SOURCES})
add_library(Cli STATIC ${libCli_SOURCES})

file(GLOB LIBS "*.a")

add_executable(cruceGame ${cruceGame_SOURCES})

静态库的编译没问题,但我不知道如何将它们链接到最终的可执行文件,而且我在可执行文件链接时遇到很多“ undefined reference ”错误。那么,我该怎么做呢?我尝试了:target_link_libraries(cruceGame ${LIBS}) ,但它不起作用。

谢谢!

最佳答案

就像 target_link_libraries(cruceGame Irc Networking GameProtocol ...) 一样简单。

PS:用仅区分大小写的名称命名库和可执行目标不是一个好主意。我怀疑这会导致 Windows 出现问题。

关于c - 在 cmake 中将静态库链接到 exe(在 Linux 上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34579339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com