c - 自动生成自定义C库的头文件

标签 c cmake c-libraries

我在文件 list 中有一些 LinkedList 的简单实现。 为了从中创建库,我使用了 cmake,我的 CMakelists.txt 如下所示:

cmake_minimum_required(VERSION 2.6) 
project(LinkedList)
set(CMAKE_CXX_FLAGS "-o -Wall")

include_directories(${LinkedList_SOURCE_DIR})
link_directories(${LinkedList_BINARY_DIR})

add_executable(list list.c) 
add_library(listStatic STATIC list.c)
add_library(listShared SHARED list.c)

一切正常。 但现在要在其他程序中使用我的库了。

据我所知,在我的程序中使用此库需要listShared.h,对于静态库需要listStatic.h

有没有办法在 CMake 中自动生成头文件,以便我可以在其他程序中#include这些库?

或者我只是不明白这一切是如何运作的?

最佳答案

静态和动态库不需要特定的 header 。您只需提供一个可用于这两种目的的 header list.h。它包含您在 list.c 中使用的所有函数和结构声明的列表,并且其他程序也应该可以使用它们。

要创建和使用任一类型的库,您必须分别更改编译器和链接器的参数。在 CMake 中,这是通过传递 add_library 关键字 STATICSHARED 来完成的。

关于c - 自动生成自定义C库的头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29059853/

相关文章:

c++ - 通过 0.0 时减去 float 时出错

cmake - CMake引发错误:无法加载缓存

android - CMake 不使用 add_executable 构建可执行文件

c++ - 在 Visual Studio、C++ 中使用 FDLIBM 库

java - 如何在 Java 中调整数组大小?

c - block 设备驱动程序 - 了解接收到的 ioctl

c - 如何释放我的自定义结构?

c++ - 使用 Visual Studio 2008 进行跨平台编译

android - Android支持setjmp/longjmp、access、chdir、getcwd吗?

c++ - 加载共享库时出错 : libgomp. so.1 : , GCC 版本错误?