我编译了所有的信息,现在我试图为一个超级项目实现CMake构建系统,我真的需要一个指导,将我通过阅读不同网站的CMake所获得的所有数据转换为实用知识< / p>
我有一个关于低估CMake目标的基本问题
在多目录结构的情况下,我希望实现最大的可移植性,从而为每个目录设置目标,然后将这些不同的目标用作其他目录中其他目标的链接,我的目标是尽可能灵活,不要与某些目录结构,利用CMake来计算依赖关系,我只关心目标
我的最终目标是图书馆库
使用案例:
第一级目录{PROJECT}(2个文件夹):
CMakeLists.txt common_env源码
第一级CMakeLists.txt:
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT(dassys)
# iam using this because target scope change with sub-directory
include(common/CMakeLists.txt)
include(src/CMakeLists.txt)
#Add Library
add_library(dassys INTERFACE)
#Creating library
target_link_libraries(dassys INTERFACE
common
src
)
二级目录{{PROJECT} / common}(2个文件夹1个文件): cfgd _ *** CMakeLists.txt dstdh header.h
二级CMakeLists.txt
#Adding Subdirectory
include(${CMAKE_CURRENT_LIST_DIR}/dstdh/CMakeLists.txt)
include(${CMAKE_CURRENT_LIST_DIR}/cfgd_***/CMakeLists.txt)
#add_subdirectory(dstdh)
#add_subdirectory(cfgd_***)
#Add Library
add_library(common INTERFACE)
#Creating library
target_link_libraries(common INTERFACE
dstdh
cfgd_***
)
----------------------------------------------------------------------------------------------------------------------------------
Thrid Level directory { {PROJECT} /common/dstdh }(6 files ):
CMakeLists.txt dassert.h dfloat.h dstdbit.h dstdbool.h dstdint.h dstdio.h dstring.h
Thrid Level CMakeLists.txt
#Adding Library
add_library(dstdh INTERFACE )
target_sources(dstd INTERFACE
${CMAKE_CURRENT_LIST_DIR}/dassert.h
${CMAKE_CURRENT_LIST_DIR}/dfloat.h
${CMAKE_CURRENT_LIST_DIR}/dstdbit.h
${CMAKE_CURRENT_LIST_DIR}/dstdbool.h
${CMAKE_CURRENT_LIST_DIR}/dstdint.h
${CMAKE_CURRENT_LIST_DIR}/dstdio.h
${CMAKE_CURRENT_LIST_DIR}/dstring.h
)
#Add include for Header only library
target_include_directories(dstdh INTERFACE
"${CMAKE_CURRENT_LIST_DIR}/dstdh/"
)
这是我的问题,我需要链接到另一个目录中的dstd库
如果我理解,怎么做呢
target_link_libraries(mylib dstd)应该在不同的目录中工作,因为我的目标是dstd INTERFACE库,我需要Cmake通过查找此目标并链接它来解决此依赖关系
我收到编译错误,因为在编译mylib时找不到dstdint.h