Продолжение изучения CMake: Как добавить qt классы в подпроект?. Теперь необходимо без корневого файла CMakeLists.txt собрать тот же проект.
+ root
- CMakeLists.txt # не используя этот файл!!!
+ test
- CMakeLists.txt # основа проекта тут!
- main.cpp
- mainwindow.h
- mainwindow.cpp
- mainwindow.ui
+ a
- CMakeLists.txt
- a.h
- a.cpp
Варианты которые попробовал и которые не заработали отмечены #x
, где x
- номер попытки. Обе попытки вызывают ошибку.
root/test/CMakeLists.txt
cmake_minimum_required(VERSION 3.15.0)
project(test)
# Find includes in corresponding build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)
# Instruct CMake to run moc automatically when needed
set(CMAKE_AUTOMOC ON)
# Create code from a list of Qt designer ui files
set(CMAKE_AUTOUIC ON)
# Find the QtWidgets library
find_package(Qt5 COMPONENTS Widgets REQUIRED)
set(test_SRCS
mainwindow.ui
mainwindow.cpp
mainwindow.h
main.cpp
)
add_executable(helloworld WIN32 ${test_SRCS})
target_include_directories(helloworld PUBLIC ../a)
add_subdirectory(../a) # 1
find_package( # 2
aLib # 2
PATHS ../a # 2
REQUIRED # 2
) # 2
# Use the Widgets module from Qt 5
target_link_libraries(helloworld Qt5::Widgets aLib)
Видимо, такое в cmake не одобряется.
UDP:
Если класс a
является библиотекой(исходники), которая используется несколькими проектами, и для этой библиотеки есть код включения(a/CMakeLists.txt
), как быть? копировать исходники в каждый используемый объект? Тогда возможно расхождение.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как ввести массив E[N][N] с клавиатуры? получилось только определить с помощью #define
Есть вот такой пользовательский литералЯ бы хотел выкинуть предупреждение в случае если принимаемое значение не лежит в диапазоне 0