2013-11-12 3 views
0
project/ 
    CMakeList.txt // top level 
    src/ 
    lib/ 
    CMakeList.txt // lib folder, builds all libraries 
    lib1/ 
    lib2/ 

lib2 зависит от LIB1, они настроены так:CMake библиотеки, которые зависят друг от друга

# 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. Как правильно добавить заголовочный файл?

ответ

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) 
+0

Я обновил сообщение с образцами. Если вы все еще ничего не понимаете, задайте конкретные вопросы о том, чего вы не понимаете. – ixSci

Смежные вопросы