project/
CMakeList.txt // top level
src/
lib/
CMakeList.txt // lib folder, builds all libraries
lib1/
lib2/
lib2依赖于lib1,它们的设置如下:
# Link the Unity library
include_directories(unity)
add_library(unity STATIC unity/unity.c unity/unity.h)
# Install the Unity library
install(TARGETS unity DESTINATION lib)
install(FILES unity.h DESTINATION includes)
# Include parallax libraries
include_directories(parallax)
# Simple text library
add_library(simpletext STATIC parallax/text/libsimpletext/libsimpletext.c parallax/libsimpletext/simpletext.h)
install(TARGETS simpletext DESTINATION lib)
install(FILES simpletext.h DESTINATION includes)
# Simple tools library
add_library(simpletools STATIC parallax/Utility/libsimpletools/libsimpletools.c)
target_link_libraries(simpletools simpletext)
target_link_libraries(unity simpletools)
install(TARGETS simpletools DESTINATION lib)
install(FILES simpletools.h DESTINATION includes)
但是在编译时,simpletext.h
中找不到simpletools
头文件。
如何以正确的方式添加头文件?
答案 0 :(得分:2)
install
作为单独的目标。在make文件中,它在Visual Studio中是make install
,它是单独的项目。因此,您不应将编译所依赖的任何内容放在install
上。如果需要在cmake运行期间复制文件,可以使用file(copy ...)
。或者您可以只包含标题所包含的文件夹,而不是复制任何内容。我没有看到任何线索,你为什么要复制标题。
如果您需要在每次运行cmake命令时复制文件,则需要具备以下条件:
FILE(COPY simpletools.h DESTINATION includes)
但是,如果您在simpletools.h
中有lib1
并且需要将其包含在lib2
中,则只需要在lib1 CMake文件中包含lib2文件夹:
INCLUDE_DIRECTORIES(lib2)