Итак, вот мой древовидный каталог:
*common_folder
\
*main1_folder---CMakeLists.txt & file1.c & files2.c
*
*main2_folder
*
*common_librayX---file_libraryX.c (and header)
*
*common_libraryY--file_libraryY.c (and header)
Итак, я хочу смоделировать следующую строку: g cc -Wall -o MAIN file1. c file2. c file_libraryX . c file_libraryY. c
Итак, вот как я пытался с моим CMakeLists.txt:
cmake_minimum_required(VERSION 3.0.0)
#Déclaration du projet
project(MAIN1 VERSION 1.0)
#Include headers
get_filename_component(PARENT_DIR ../ ABSOLUTE)
include_directories(${PARENT_DIR}/commonlibrayX)
include_directories(${PARENT_DIR}/commonlibraryY)
add_executable(
MAIN1
file1.c
file2.c
file_libraryX.c
file_libraryY.c
)
install (TARGETS Project DESTINATION bin)
Конечно, я получаю ошибку, что он не может найти файлы file_libraryX. c и file_libraryy. c.
Я искал везде, и мне кажется, я совсем не понимаю, как вы включаете библиотеки (не заголовки) из разных каталогов, чем текущий где CMakeLists.txt. В моем случае родительский каталог.
Кроме того, причина того, почему у меня нет CMakeLists.txt на более высоком уровне в дереве каталога, заключается в том, что я хочу создавать разные двоичные файлы в каждой основной папке, не имея переписать CMakeLists.txt. Оказалось, они делятся общими библиотеками.
Может кто-нибудь помочь мне?