我在文件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
其他程序中的那些库?
或者我只是不明白这一切是如何运作的?
答案 0 :(得分:0)
不需要静态和动态库的特定标头。您只需提供一个标题list.h
,可用于这两个目的。它包含您在list.c
中使用的所有函数和结构声明的列表,以及其他程序也可以使用的声明。
要创建和使用任何类型的库,您必须分别更改编译器和链接器的参数。在CMake中,这可以通过add_library
关键字STATIC
或SHARED
来完成。