【发布时间】:2012-01-19 17:22:28
【问题描述】:
我已经为此苦苦挣扎了很长一段时间,而我在 cmake 的冒险只是导致了我很确定是不正确的骇人听闻的解决方案。
我创建了一个包含几个文件的库,如下:
-libfolder
-codepart1folder
-CMakeLists.txt
-codepart1.cpp
-codepart1.hpp
-codepart2folder
-codepart3folder
-lib.cpp
-lib.hpp
-CMakeLists.txt
我写了一个 CMakeLists 文件来编译这个库(经过一些实验),我可以生成一个 lib.a 文件。现在我想将此代码作为库包含在其他项目中,并通过 lib.hpp 中的接口访问它。就目录结构而言,最好的方法是什么?我需要在根项目的 CMakeLists.txt 中添加什么?
我目前的尝试是将 -libfolder 作为子文件夹添加到我当前的项目中,并添加命令:
include_directories(${PROJECT_SOURCE_DIR}/libfolder)
link_directories(${PROJECT_BINARY_DIR}/libfolder)
add_subdirectory(libfolder)
target_link_libraries(project lib)
当我运行make时,库编译正常,但是当project.cpp编译时,它抱怨找不到codepart1.hpp(包含在lib.hpp中,包含在project.cpp中)。
我怀疑这是错误的做法,但我无法浏览 CMake 文档并找到有关设置此类项目的好教程。请帮助,CMake 大师!
【问题讨论】:
-
对于 cmake per-see 可能不是很有帮助,但我建议你看一下 premake。它已经接近成熟,并且对 cmake 有很多优势(一个是它的速度要快得多,尤其是如果你已经知道 lua 的话)。你可以在industriousone.com/what-premake查看。
-
那么,你想让你的新项目使用以前构建的库,还是想从一个元项目中构建两者?
标签: c++ compilation makefile cmake