【发布时间】:2011-12-10 19:16:48
【问题描述】:
我正在尝试使用 cmake(在带有 GNU make 和 g++ 的 Linux 上)构建一个包含两个子目录的项目:MyLib 和 MyApp。 MyLib 包含静态库的源代码; MyApp 需要链接到该库。我正在尝试使用以下 CMakeLists.txt 在 Linux 上构建生成的 makefile:
cmake_minimum_required (VERSION 2.6)
project (MyProj)
include_directories (MyLib)
file(GLOB MyLibSrc MyLib/*.cpp)
add_library(MyLibrary STATIC ${MyLibSrc})
file(GLOB MyAppSrc MyApp/*.cpp)
add_executable(MyApplication ${MyAppSrc})
target_link_libraries(MyApplication MyLibrary)
这“几乎”有效。它在链接时失败,因为它生成 libMyLibrary.a - 它位于根目录中。当我添加:
link_directories(${MyProj_BINARY_DIR})
没什么区别。
我有几个(相互关联的)问题:
- 强制 cmake 将我的库和可执行文件构建到“暂存目录”(例如 MyStage)以保持目标与源分开的最佳方法是什么?
- 如何说服 cmake 将应用程序与库链接?
- 如果我想构建一个调试版本和一个发布版本,扩展我的 cmake 脚本以执行此操作的最佳方法是什么 - 确保调试应用程序链接到调试库和发布应用程序链接到发布库?李>
我是 cmake 的新手。我已经阅读了我在网上可以找到的内容,但发现自己很难让我的库与我的可执行文件链接。在我看来,这种配置应该很常见。一个婴儿床的例子会很有帮助,但我还没有找到。
【问题讨论】: