【发布时间】:2013-08-28 05:50:41
【问题描述】:
我想知道如何在没有任何 FIND_PACKAGE 的情况下查找/链接库。
假设我们有一个名为 testlib 的“个人”库:
/perso/testlib/include/testlib1.h
/perso/testlib/include/testlib2.h
/perso/testlib/lib/testlib1.a
/perso/testlib/lib/testlib2.a
如何将其与 CMake 链接?
1) 在CMakeLists.txt的代码中直接链接的函数有哪些?
2) 如何让用户选择文件在哪里?
3) 我很难理解 CMake 解释的内容和不解释的内容。例如,如果您定义变量 ${MYVARIABLE_INCLUDE_DIR} 或 ${MYVARIABLE_LIBRARIES} 是“INCLUDE_DIR”或“LIBRARIES”,则由 CMake 解释扩展,或者如果我将此变量称为 ${MYVARIABLE_INCDIR} 没有区别?
4) 如果您的库在 lib 目录中包含十个或更多库文件,如何执行相同的程序(包括“个人”库)?
5) 最后,当你输入TARGET_LINK_LIBRARIES(myexecutable gmp),你怎么知道库的名字是“gmp”。为什么不是“GMP”或“GMP”?放入此函数的库名称是否等于 .a 文件减去 "lib" 和 ".a" ?例如 libgmp.a -> gmp ?如果我想链接一个名为 libtestlolexample.a 的库,我必须输入 TARGET_LINK_LIBRARIES(myexecutable testlolexample) 吗?
非常感谢。
【问题讨论】:
-
您是否也在同一个项目中使用 CMake 构建库,还是单独构建的?您希望用户分别选择 include 和 lib 目录,还是选择例如 /perso/testlib 目录并让 CMake 查看 include 和 lib 子目录?
-
您是否有一个(或多个)默认路径来查找这些文件,或者用户是否总是需要手动选择?
标签: cmake