C++ cmake仅基于子目录的库

C++ cmake仅基于子目录的库,c++,linux,cmake,subdirectory,C++,Linux,Cmake,Subdirectory,我正在尝试创建一个小的cmake文件。目录结构包括4个子文件夹,其中包含src和头文件。根目录下没有src或头文件。我只想通过编译这四个文件夹,使用cmake创建一个共享库。 根目录下的CMakeLists.txt cmake_minimum_required (VERSION 2.8.7) Project(NEWPROJ) set(${PROJECT_NAME}_MAJOR_VERSION 00) set(${PROJECT_NAME}_MINOR_VERSION 01) set(${PROJ

我正在尝试创建一个小的cmake文件。目录结构包括4个子文件夹,其中包含src和头文件。根目录下没有src或头文件。我只想通过编译这四个文件夹,使用cmake创建一个共享库。 根目录下的CMakeLists.txt

cmake_minimum_required (VERSION 2.8.7)
Project(NEWPROJ)
set(${PROJECT_NAME}_MAJOR_VERSION 00)
set(${PROJECT_NAME}_MINOR_VERSION 01)
set(${PROJECT_NAME} 0)
set(${PROJECT_NAME}_VERSION
  ${${PROJECT_NAME}_MAJOR_VERSION}.${${PROJECT_NAME}_MINOR_VERSION}.${${PROJECT_NAME}_PATCH_VERSION})
set(${PROJECT_NAME}_SOVERSION ${${PROJECT_NAME}_MAJOR_VERSION}.${${PROJECT_NAME}_MINOR_VERSION})
Message ( Root )
include_directories("${PROJECT_SOURCE_DIR}/Folder1/include")
include_directories("${PROJECT_SOURCE_DIR}/Folder2/include")
include_directories("${PROJECT_SOURCE_DIR}/Folder3/include")
include_directories("${PROJECT_SOURCE_DIR}/Folder4/include")

add_subdirectory ("${PROJECT_SOURCE_DIR}/Folder1")
add_subdirectory ("${PROJECT_SOURCE_DIR}/Folder2")
add_subdirectory ("${PROJECT_SOURCE_DIR}/Folder3")
add_subdirectory ("${PROJECT_SOURCE_DIR}/Folder4")

add_library( ${PROJECT_NAME} SHARED ${SOURCE} ${HEADERS})
Folder1中的CMakeLists.txt

MESSAGE(Folder1)
set(SOURCE
   ${SOURCE}
   ${CMAKE_CURRENT_SOURCE_DIR}/src/file1.cc
   ${CMAKE_CURRENT_SOURCE_DIR}/src/file2.cpp
   ${CMAKE_CURRENT_SOURCE_DIR}/src/file3.cc
   PARENT_SCOPE
)

set(HEADERS
   ${HEADERS}
   ${CMAKE_CURRENT_SOURCE_DIR}/include/file1.h
   ${CMAKE_CURRENT_SOURCE_DIR}/include/file2.h
   ${CMAKE_CURRENT_SOURCE_DIR}/include/file3.h
   ${CMAKE_CURRENT_SOURCE_DIR}/include/file4.h
   PARENT_SCOPE
)
克马克。。成功的

使folder1/src/file1.cc:1:20:致命错误:file1.h:没有这样的文件或目录

file1.cc

#include "file1.h"

我不知道你发布的代码是如何导致这个问题的。。。如果您可以设置一个小的GitHub存储库,它会导致与我可以尝试自己编译的问题相同的问题,这将非常有用。获取此信息,在执行包含目录时,双引号丢失。除了敲打脑袋,没办法知道。cmake没有错误。我对在根目录上声明include_目录的方式也不太满意。我可以在每个文件夹级别都这样做吗?是的。因此,添加缺少的右引号。是
Folder1
还是
Folder1
?我不知道问题是如何由您发布的代码引起的。。。如果您可以设置一个小的GitHub存储库,它会导致与我可以尝试自己编译的问题相同的问题,这将非常有用。获取此信息,在执行包含目录时,双引号丢失。除了敲打脑袋,没办法知道。cmake没有错误。我对在根目录上声明include_目录的方式也不太满意。我可以在每个文件夹级别都这样做吗?是的。因此,添加缺少的右引号。是
Folder1
还是
Folder1