【发布时间】:2016-03-30 01:07:09
【问题描述】:
我是 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 来构建所有项目,以及单独构建每个项目的选项。单个构建目录可以实现吗?
感谢您的帮助。
【问题讨论】: