gpt4 book ai didi

c++ - 包含另一个 CMake 项目作为库

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:05:43 25 4
gpt4 key购买 nike

我决定使用 KDevelop 为 C 程序(我不知道这两种语言)制作一个 C++-Qt-GUI,而 KDevelop 又使用 CMake。

C 源代码没有头文件,所以我做了一个,并将一些结构迁移到其中,以及 C 源代码中我需要调用的唯一函数的声明。

问题是我无法调用它,因为 CMake 找不到 C 文件(因此找不到定义),或者当我将 C 源添加到 CMakeLists.txt 中的源集时,它提示我的 main.cpp 和 C 源文件都有主要功能。

我如何告诉 CMake 它应该只使我在 header 中声明的 C 文件中的函数可用?

这是它:

project(oregengui)
cmake_minimum_required(VERSION 2.6)
find_package(Qt4 REQUIRED)

include_directories(${QT_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR})

set(oregengui_SRCS oregengui.cpp main.cpp qrangeslider/qrangeslider.cpp)
#as soon as i add oregengui/oregengui.c, it won’t work because of the main function
qt4_automoc(${oregengui_SRCS})
add_executable(oregengui ${oregengui_SRCS})
target_link_libraries(oregengui ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY})

PS:C源我不想改动太多,因为它是一个独立的项目。我猜开发者会接受 header 的引入,但不会更多。

最佳答案

尝试将 C 文件编译为库并将其与可执行文件链接。

add_library(clib oregengui/oregengui.c)
[...]
add_executable(oregengui ${oregengui_SRCS})
target_link_libraries(oregengui ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} clib)

关于c++ - 包含另一个 CMake 项目作为库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4792618/

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