0
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. 如何以正确的方式添加头文件?

4

1 回答 1

2

install作为单独的目标工作。在 make 文件中,它make install在 Visual Studio 中是单独的项目。所以你不应该把你的编译依赖的任何东西放在install. file(copy ...)如果您需要在 cmake 运行期间复制文件,您可以使用。或者您可以只包含您的标题所在的文件夹,而根本不复制任何内容。我看不出任何线索,你为什么要复制标题。

如果每次运行 cmake 命令时都需要复制文件,则需要具备以下条件:

FILE(COPY simpletools.h DESTINATION includes)

但是,例如,如果您有simpletools.h并且lib1需要将其包含在其中,则lib2只需将 lib2 文件夹包含在 lib1 CMake 文件中:

INCLUDE_DIRECTORIES(lib2)
于 2013-11-12T15:30:47.283 回答