由于我以前从未使用过CMake,而且我目前有一个相对简单的项目,因此我想开始使用它(目前仅使用VS项目)。我的项目使用了我需要构建的第三方库(sqlite),该函数使用此外部库访问sqlite数据库,该库具有一些使用catch2进行的单元测试以及主要的可执行文件(该数据库函数的CLI)(稍后再进行一些测试)。整个项目的文档应使用Doxygen构建。 但是,即使使用这个很小的项目,CMake还是让我有些不知所措,因为我设法使用cmake构建了一个静态库,或者使用cmake使用catch2构建了一个测试。 我当前的目录布局如下:
root
|-3rdParty
|-catch2
|-build
|-documentation
|-include
|-sqlite3.h
|-lib
|-sqlite3.a
|-modules
|-database
|-header and source files for database function
|-CLI
|-header and source files for CLI
|-src
|-main.cpp
|-tests
|-test.cpp
构建模块后,如何将模块的静态库添加到lib并包含目录?
我设法使用构建静态库
set_target_properties( modulename
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib/
)
并使用
添加头文件set( MY_PUBLIC_HEADERS
${CMAKE_CURRENT_SOURCE_DIR}/include/<header.h>
)
file(
COPY ${MY_PUBLIC_HEADERS}
DESTINATION ${CMAKE_SOURCE_DIR}/include/)
唯一的问题是,当我删除包含cmake中的头文件时,不会再次复制它