我是CMake的初学者用户。我的环境中有几个项目,比如:
project
|------ CMakeLists.txt (The main Cmake)
|------ ProjectA
| |----- .cpp files
| |----- .hpp files
| |----- CMakeList.txt
|------ ProjectB
| |----- .cpp files
| |----- .hpp files
| |----- CMakeList.txt
|
|------ build
| |----- CMakeStuff
|------ bin
| |---- executables
|------ lib
| |---- libwhatever.a
|------ db
|---- Database stuff
如上所示,我希望为每个项目使用一个单一的构建目录,最好能够将其分成多个子项目,例如build/projectA
,build/ProjectB
,这样如果我需要重建单个项目,我可以删除整个build/Project
文件,所有内容都会被删除,新的Cmake
将重新构建它。
我在配置CMAKE时遇到了困难。
我的原始CMakeList.txt在项目文件夹中:
cmake_minimum_required(VERSION 3.2.2.)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/../lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/../lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/../bin)
project(projectA)
set(CMAKE_BUILD_TYPE Debug)
file(GLOB SOURCES "*.cpp")
add_library(commonmessage SHARED ${SOURCES})
install(TARGETS commonmessage DESTINATION ../lib)
我的问题是:
A)如果我在一个单独的构建目录上运行 CMake,会发生什么情况 - 是否可能,正确的 CMAKE 配置是什么?
B)我需要在 ProjectA
的编译中包含来自 ProjectB
的文件 - 我怎样才能在每个项目的 CMakeLists.txt
中设置它?
C)最后,我需要一个单一的 makefile 来构建所有内容,并且需要选择单独构建每个项目的选项。是否可以在一个单独的构建目录中实现这一点?
感谢您的帮助。
bin
是所有可执行文件安装的位置。lib
将保存所有库。 - Mendes