问题描述
我有以下项目结构:
Project
|-include
| |-somedir
| | |-someheader.h
|-src
| |-somedir
| | |-somesource.c
| | |-CMakeLists.txt
| |-main.c
| |-CMakeLists.txt
|-lib
| |-somelib
| | |-include
| | | |-somelibheader.h
| | |-src
| | | |-somelibsource.c
| | | |-CMakeLists.txt
| | |-CMakeLists.txt
| |-CMakeLists.txt
|-CMakeLists.txt
项目/CMakeLists.txt:
cmake_minimum_required(VERSION 3.13)
set(CMAKE_C_STANDARD 11)
project(Project)
list(APPEND INCLUDES ${CMAKE_SOURCE_DIR}/include) # Contains all headers will be add to target
set(LIBRARIES_ROOT ${CMAKE_SOURCE_DIR}/lib)
set(SOURCES_ROOT ${CMAKE_SOURCE_DIR}/src)
add_subdirectory(${LIBRARIES_ROOT})
add_subdirectory(${SOURCES_ROOT})
Project/src/CMakeLists.txt:
add_executable(${CMAKE_PROJECT_NAME} main.c)
target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${INCLUDES}) # adding headers
target_link_libraries(${CMAKE_PROJECT_NAME} ${LIBRARIES}) # linking libraries
add_subdirectory(somedir)
Project/src/somedir/CMakeLists.txt:
target_sources(${CMAKE_PROJECT_NAME} PRIVATE somesource.c)
Project/lib/CMakeLists.txt:
add_subdirectory(somelib)
Project/lib/somelib/CMakeLists.txt:
add_library(somelib)
target_include_directories(somelib PRIVATE include)
list(APPEND INCLUDES include) # Adding lib headers to be included to target
list(APPEND LIBRARIES somelib) # Adding lib to be linked to target
add_subdirectory(src)
Project/lib/somelib/src/CMakeLists.txt:
target_sources(somelib PRIVATE somelibsource.c)
在 main.c 中可以包含项目头文件,如 #include <somedir/someheader.h>
,但库头文件不能。它需要相对于 main.c 路径,如 #include "../lib/somelib/include/somelibheader.h"
。如何修复它并将库头添加到公共范围?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)