【发布时间】:2012-05-16 06:23:33
【问题描述】:
我开始使用 C 来使用 CMAKE,实际上我正在创建两个非常小的静态库。
我的目标是:
- 这些库被编译并链接到 *.a 文件中。 [这 作品]
- 然后我希望将 *.a 文件复制到 /usr/local/lib [这也有效]
- 据我所知(很少),它们是使用
-lnameoflib链接的,这是一个编译器标志。好的。我已经准备好我的 CMakeLists.txt,它实际上将 *.a 文件复制到/usr/local/lib。但是,为了能够在程序中使用它们,我还需要将它们的头文件复制到/usr/local/include,然后我可以通过简单的方法将它们包含在#include <mylibheader.h>中。我现在就是这么理解的。
我的问题是 - 使用 CMAKE 将头文件复制到 /usr/include 文件夹的正确方法是什么?我希望它在执行 make install 时自动复制它们,就像 *.a 文件一样。
对于这两个库,我都有一个类似的 CMakeLists.txt:
project(programming-network)
add_library(programming-network STATIC
send_string.c
recv_line.c
)
INSTALL(TARGETS programming-network
DESTINATION "lib"
)
【问题讨论】:
-
为什么不在
Makefile的install: \n\tcp $INCLUDES/* /usr/include/下添加一行? -
好的,但这意味着它不能直接在 CMakeLists.txt 中完成,并且每次运行 cmake 后我都必须在 Makefile 中再次写入?
-
我想是这样,我对cmake和CMakeLists.txt不太熟悉,我更喜欢使用gnu-automake。
-
如果您的目标是在使用
-DCMAKE_INSTALL_PREFIX=/usr调用 CMake 之后安装的,那么您的库最终会以/usr/lib结尾(正如预期的那样,前缀设置为/usr),但您的标头最终会在/include(可能不是预期的)。 Per 的回答更有意义。 -
@lukecampbell 手动向 makefile 添加行会破坏使用 cmake 的目的(这比 automake 好 100 倍)。
标签: c cmake static-libraries