我有一些問題,爲我的項目創建CMakeList。我有以下結構:CMakeList只是頭項目,並在另一個項目中使用它
ProjectAB
|
|--- include
| |--- A.h
| |--- B.h
|
| --- CMakeList.txt
Project1
|
|--- include
| |--- src1.h
|
|--- src
| |--- src1.cpp (#include "src1.h"; #include "A.h"; #include "B.h")
|
| --- CMakeList.txt
ProjectAB只是通過在頭組成的,所以我在CMake的指南和一些其他來源(link)一直在讀,最後我寫了下面CMakeList吧:
cmake_minimum_required(VERSION 3.6.1)
project(lib_projectAB VERSION 1.0.0 LANGUAGES CXX)
add_library(projectAB INTERFACE)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
target_include_directories(projectAB
INTERFACE
A.h
B.h
)
現在我想用ProjectAB的頭在PROJECT1。由於不相關的原因,我必須安裝它們。我不確定這兩個項目的CMakeLists應該如何。
我想這對於PROJECT1:
cmake_minimum_required(VERSION 3.6.1)
project(lib_project1 VERSION 1.0.0 LANGUAGES CXX)
add_subdirectory(src)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../projectAB/include)
add_library(project1
STATIC
src1.h
src1.cpp
)
target_link_libraries(project1
PUBLIC
third_party_LIBRARIES
lib_projectAB
)
install(
FILES
src1.h
A.h
B.h
DESTINATION
.
)
但它不是優雅,也不工作。
這樣做的正確方法是什麼?
Dutow你好,首先感謝您的時間。 我更新的問題與CMakeLists的位置,並用正確的include_directories($ {} CMAKE_CURRENT_SOURCE_DIR /../ projectAB /包括)我因子評分關於你說的有關內部添加ProjectAB但我不能將其添加爲一個子目錄,因爲還有其他項目(Project2,Project3 ...)與使用ProjectAB的Project1完全相同。所以在每一個上覆制都會有點骯髒。 我也正在考慮通過CMake的製作ProjectAB「容易找到」的選項,但我想知道是否有更多的選擇。 – solosito
其他最常用的選項是什麼,我也這裏提到:在含有PROJECT1和projectAB的目錄中添加一個「頂級」 cmakefile,並添加這兩個項目的子目錄。 – Dutow