用于具有单个 .h 文件的库的 Cmake
Posted
技术标签:
【中文标题】用于具有单个 .h 文件的库的 Cmake【英文标题】:Cmake for a library with a single .h file 【发布时间】:2013-11-29 02:39:45 【问题描述】:这肯定是关于 cmake 的一个非常基本的问题,...
我想知道是否有可能或者是否有必要创建一个静态库,例如:libhelloword.a 来自单个 .h 文件的 cpp 代码。
我写了 CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
SET(LIB_HELLOWORLD "helloworld")
INCLUDE_DIRECTORIES(
$CMAKE_CURRENT_SOURCE_DIR
)
ADD_LIBRARY($LIB_HELLOWORLD STATIC
helloworld.h
)
不幸的是,这不起作用。
我明白了
-- Configuring done
CMake Error at CMakeLists.txt:12 (ADD_LIBRARY):
Cannot find source file:
helloworld.h
Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
.hxx .in .txx
-- Build files have been written to: /path/to/files
我无法运行 make,因为没有创建任何 makefile
任何帮助将不胜感激,因为我迷失在这个 cmake 世界中:p
顺便说一句:.h 文件是一个外部库,(肯定)我无法修改。
【问题讨论】:
你的文件结构是什么样的? 创建只有标题的静态库有什么意义?The .h file is an external library
你的意思是你有外部已经构建的库,helloworld.h
是接口头吗?
【参考方案1】:
你打算如何使用这个库?无论如何,您需要将它的标题包含到您的执行模块中。因此,该头文件中的所有代码都将在那里编译。
但如果你真的想要,你可以创建 helloworld.cpp 并在其中包含 helloworld.h 并以这种方式修改 CMakeList.txt:
ADD_LIBRARY($LIB_HELLOWORLD STATIC helloworld.cpp)
【讨论】:
以上是关于用于具有单个 .h 文件的库的 Cmake的主要内容,如果未能解决你的问题,请参考以下文章