Skip to content

Commit

Permalink
CMake: Add more Conan packages
Browse files Browse the repository at this point in the history
  • Loading branch information
HerrNamenlos123 committed Dec 22, 2023
1 parent 4532d60 commit 82f7da6
Show file tree
Hide file tree
Showing 6 changed files with 104 additions and 33 deletions.
40 changes: 21 additions & 19 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,23 +22,7 @@ add_library(of::openframeworks ALIAS openframeworks)
# This is another CMake script that adds the header locations and source files
include(${CMAKE_CURRENT_LIST_DIR}/libs/openFrameworks/CMakeLists.txt)

# This downloads and configures the dependencies for us
# include(${CMAKE_CURRENT_LIST_DIR}/cmake/download_and_link_deps.cmake)


# of::tess2
# of::glm
# of::utf8
# of::FreeImage
# of::uriparser
# of::openssl
# of::curl
# of::freetype
# of::pugixml
# of::json

# find_package(unofficial-libtess2 CONFIG REQUIRED)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_BINARY_DIR}")
find_package(glm CONFIG REQUIRED)
find_package(utf8cpp CONFIG REQUIRED)
find_package(FreeImage CONFIG REQUIRED)
Expand All @@ -47,6 +31,27 @@ find_package(curl CONFIG REQUIRED)
find_package(freetype CONFIG REQUIRED)
find_package(pugixml CONFIG REQUIRED)
find_package(nlohmann_json CONFIG REQUIRED)
find_package(glew CONFIG REQUIRED)
find_package(glfw3 CONFIG REQUIRED)
find_package(cairo CONFIG REQUIRED)
find_package(libtess2 CONFIG REQUIRED)

target_link_libraries(openframeworks PUBLIC
glm::glm
utf8cpp
freeimage::freeimage
uriparser::uriparser
CURL::libcurl
Freetype::Freetype
pugixml::pugixml
nlohmann_json::nlohmann_json
GLEW::GLEW
glfw
cairo::cairo
libtess2::libtess2
)
message(STATUS "glm_INCLUDE_DIRS_RELEASE: ${glm_INCLUDE_DIRS_RELEASE}")
target_include_directories(openframeworks PUBLIC ${glm_INCLUDE_DIRS_RELEASE})

# C++ standard version and disabling non-standard compiler specific features
target_compile_features(openframeworks PUBLIC cxx_std_17)
Expand All @@ -58,9 +63,6 @@ target_compile_definitions(openframeworks PUBLIC
OF_USING_STD_FS # Use the new C++17 filesystem library instead of boost
UNICODE # WinAPI setup
_UNICODE
CURL_STATICLIB
POCO_STATIC
CAIRO_WIN32_STATIC_BUILD
)

# Compiler flags specific to MSVC
Expand Down
34 changes: 34 additions & 0 deletions conan/libtess2/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
cmake_minimum_required(VERSION 3.16)
project(libtess2)

set(LIBTESS2_SOURCES
source/Source/bucketalloc.c
source/Source/bucketalloc.h
source/Source/dict.c
source/Source/dict.h
source/Source/geom.c
source/Source/geom.h
source/Source/mesh.c
source/Source/mesh.h
source/Source/priorityq.c
source/Source/priorityq.h
source/Source/sweep.c
source/Source/sweep.h
source/Source/tess.c
source/Source/tess.h
)
add_library(libtess2 STATIC ${LIBTESS2_SOURCES})
add_library(libtess2::libtess2 ALIAS libtess2)
target_include_directories(libtess2 PUBLIC source/Source source/Include)
target_compile_features(libtess2 PUBLIC c_std_99)

set_target_properties(libtess2 PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/lib
ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/lib
ARCHIVE_OUTPUT_DIRECTORY_MINSIZEREL ${CMAKE_BINARY_DIR}/lib
ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO ${CMAKE_BINARY_DIR}/lib
LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/lib
LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/lib
LIBRARY_OUTPUT_DIRECTORY_MINSIZEREL ${CMAKE_BINARY_DIR}/lib
LIBRARY_OUTPUT_DIRECTORY_RELWITHDEBINFO ${CMAKE_BINARY_DIR}/lib
)
33 changes: 33 additions & 0 deletions conan/libtess2/conanfile.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
from conan import ConanFile
from conan.tools.scm import Git
from conan.tools.files import copy
from conan.tools.cmake import CMake
from os.path import join

class LibTess2Conan(ConanFile):
name = "libtess2"
version = "1.0.2"
package_type = "python-require"
exports = "*"
settings = "os", "compiler", "build_type", "arch"
generators = "CMakeDeps", "CMakeToolchain"

def export_sources(self):
copy(self, "CMakeLists.txt", self.recipe_folder, self.export_sources_folder)

def source(self):
git = Git(self)
git.clone(url="https://github.com/memononen/libtess2.git", target="source")
git.folder = "source"
git.checkout("v1.0.2")

def build(self):
cmake = CMake(self)
cmake.configure(build_script_folder=self.export_sources_folder)
cmake.build()

def package(self):
copy(self, "*.h", join(self.source_folder, "source", "Include"), join(self.package_folder, "include"))
copy(self, "*.lib", join(self.source_folder, "lib"), join(self.package_folder, "lib"))
copy(self, "*.pdb", join(self.source_folder, "lib"), join(self.package_folder, "lib"))
copy(self, "*.a", join(self.source_folder, "lib"), join(self.package_folder, "lib"))
22 changes: 10 additions & 12 deletions conanfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class OFConan(ConanFile):
generators = "CMakeDeps", "CMakeToolchain"
settings = "os", "compiler", "build_type", "arch"

def include_package(self, name, version):
def include_package(self, name):
thisfilepath = os.path.dirname(os.path.realpath(__file__))
recipes_path = os.path.join(thisfilepath, "conan", name)
self.run("conan export --user=user --channel=stable conanfile.py", cwd=recipes_path)
Expand Down Expand Up @@ -40,15 +40,13 @@ def requirements(self):
self.requires("libusb/1.0.26")
self.requires("poco/1.12.5p2")
self.requires("libxml2/2.12.2")

# self.include_package("svgtiny", "0.1.7")
# self.include_package("libdom", "0.4.1")
# self.include_package("libparserutils", "0.2.4")
self.requires("glew/2.2.0")
self.requires("glfw/3.3.8")
self.requires("cairo/1.18.0")

# self.include_package("svgtiny")
# self.include_package("libdom")
# self.include_package("libparserutils")
self.include_package("libtess2")
self.requires("libtess2/1.0.2@user/stable")
#self.requires("svgtiny/0.1.7@user/stable")

def build(self):
cmake = CMake(self)
cmake.configure() # equivalent to self.run("cmake . <other args>")
cmake.build() # equivalent to self.run("cmake --build . <other args>")
cmake.test() # equivalent to self.run("cmake --target=RUN_TESTS")

4 changes: 3 additions & 1 deletion libs/openFrameworks/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ foreach(objc ${OBJC_FILES})
list(REMOVE_ITEM SOURCES ${objc})
endforeach()

list(REMOVE_ITEM SOURCES ${CMAKE_CURRENT_LIST_DIR}/app/ofAppGlutWindow.cpp)

target_sources(openframeworks PRIVATE ${SOURCES})
target_include_directories(openframeworks PUBLIC ${CMAKE_CURRENT_LIST_DIR})
source_group(TREE "${CMAKE_CURRENT_LIST_DIR}/" PREFIX "src" FILES ${SOURCES})
Expand All @@ -22,4 +24,4 @@ foreach(subfolder ${subfolders})
if (IS_DIRECTORY ${subfolder} AND NOT ${sub_name} MATCHES "^\\.")
target_include_directories(openframeworks PUBLIC ${subfolder})
endif()
endforeach()
endforeach()
4 changes: 3 additions & 1 deletion libs/openFrameworks/utils/ofConstants.h
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,9 @@ enum ofTargetPlatform{

// then the the platform specific includes:
#ifdef TARGET_WIN32
#define GLEW_STATIC
#ifndef GLEW_STATIC
#define GLEW_STATIC
#endif
#define GLEW_NO_GLU
#include "GL/glew.h"
#include "GL/wglew.h"
Expand Down

0 comments on commit 82f7da6

Please sign in to comment.