Я пытаюсь понять, как это сделать правильно. Я использую Windows, если это имеет значение. Итак, прежде чем я начну возиться с методом проб и ошибок, чтобы заставить его как-то работать, я хотел бы спросить, каков «правильный» способ сделать это с помощью QtCreator и CMake. Предположим, что мои наборы инструментов настроены правильно для создания приложений Qt.
Предположим, что моя структура подпапок представляет собой новую загрузку библиотек:
Код: Выделить всё
mylibrary/main.cpp
occt-7_8_0/
freetype-2.10.4/
tcl8.5.0/
tk8.5.0/
Код: Выделить всё
#include
#include
void makeBox(){
gp_Pnt gp1(0,0,0);
gp_Pnt gp2(1,1,1);
TopoDS_Solid box = BRepPrimAPI_MakeBox(gp1, gp2).Solid();
}
Код: Выделить всё
message("=== Occt wrapper as a lib ===")
add_library(mylibrary_lib SHARED)
if (CMAKE_COMPILER_IS_GNUCXX)
add_compile_options(-Wa,-mbig-obj)
endif()
if (MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj")
endif()
# find_package() uses Config.cmake-file in _DIR path
find_package(OpenCASCADE REQUIRED)
target_include_directories(mylibrary_lib PRIVATE "${OpenCASCADE_INCLUDE_DIR}") # OCC is needed
if(NOT OpenCASCADE_FOUND)
message(FATAL_ERROR "Cannot build the executable without OpenCASCADE. Please set the variable OpenCASCADE_DIR.")
else()
message(" found OpenCASCADE " ${OpenCASCADE_VERSION})
# include
target_include_directories(mylibrary_lib PUBLIC ${OpenCASCADE_INCLUDE_DIR})
message(" found OpenCASCADE_INCLUDE_DIR: ${OpenCASCADE_INCLUDE_DIR}" )
# link
target_link_libraries(mylibrary_lib PUBLIC ${OpenCASCADE_LIBRARIES}) # This should be private!
message(" found OpenCASCADE_LIBRARIES: ${OpenCASCADE_LIBRARIES}" )
endif()
target_sources(mylibrary_lib PUBLIC "./main.cpp")
Я пытаюсь использовать vcpkg, как предложено. Вот что я сделал:
- Установил vcpkg:
https://learn.microsoft.com/de-de/vcpkg/get_started /get-started?pivots=shell-cmd
Выполните шаг 1 «Настройка vcpkg» - Найдите и запомните путь к папке vcpkg.
- Откройте CMD в этой папке.
- Установите пакет opencascade, набрав:
Код: Выделить всё
vcpkg --install opencascade
- Установите и активируйте плагин "Vcpkg"
- Перейдите в меню Edit/Preferences/CMake
На вкладке Vcpkg:
Найдите путь к каталогу vcpkg - На вкладке Общие:
Отметьте опцию «Автоматическая настройка диспетчера пакетов»
[*]создайте vcpkg.json в каталоге src библиотеки, который гласит:
Код: Выделить всё
{
"dependencies": [
"opencascade", "freetype", "tcl", "tk"
]
}
https://doc.qt.io/qtcreator/creator-how-to -create-vcpkg-manifest-files.html
[*]В В CMakesList.txt добавить:
Код: Выделить всё
find_package(OpenCASCADE CONFIG REQUIRED)
Затем я очистил проект и нажал «Запустить CMake». Однако результат:
Код: Выделить всё
Could not find a package configuration file provided by "opencascade" with
any of the following names:
opencascadeConfig.cmake
opencascade-config.cmake
Add the installation prefix of "opencascade" to CMAKE_PREFIX_PATH or set
"opencascade_DIR" to a directory containing one of the above files. If
"opencascade" provides a separate development package or SDK, be sure it
has been installed.
Код: Выделить всё
//Value Computed by CMake.
CMAKE_FIND_PACKAGE_REDIRECTS_DIR:STATIC=C:/path/to/build/build-projectname-Desktop_Qt_5_15_2_MSVC2015_64bit-Debug/CMakeFiles/pkgRedirects
Подробнее здесь: https://stackoverflow.com/questions/781 ... sing-cmake