Skip to content

Commit 1a25590

Browse files
committed
Add CMakelists.txt, update iPlug2
1 parent 9f6f1de commit 1a25590

File tree

2 files changed

+105
-1
lines changed

2 files changed

+105
-1
lines changed

TemplateProject/CMakeLists.txt

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
cmake_minimum_required(VERSION 3.11 FATAL_ERROR)
2+
cmake_policy(SET CMP0091 NEW)
3+
4+
project(TemplateProject VERSION 1.0.0 LANGUAGES C CXX)
5+
6+
# Set iPlug2 directory and include iPlug2 CMake files
7+
set(IPLUG2_DIR ${CMAKE_SOURCE_DIR}/../iPlug2)
8+
include(${IPLUG2_DIR}/iPlug2.cmake)
9+
find_package(iPlug2 REQUIRED)
10+
11+
# Uncomment the following line if you need Skia support
12+
# find_package(iPlug2 REQUIRED COMPONENTS Skia)
13+
14+
# Set project directories and source files
15+
set(PROJECT_DIR "${CMAKE_SOURCE_DIR}")
16+
set(SRC_FILES
17+
"${PROJECT_DIR}/config.h"
18+
"${PROJECT_DIR}/TemplateProject.h"
19+
"${PROJECT_DIR}/TemplateProject.cpp"
20+
)
21+
source_group(TREE ${PROJECT_DIR} FILES ${SRC_FILES})
22+
23+
# Set resource files
24+
set(RESOURCES
25+
"${PROJECT_DIR}/resources/fonts/Roboto-Regular.ttf"
26+
)
27+
28+
if(APPLE)
29+
# Enable universal binary build for Release builds on macOS
30+
if(CMAKE_BUILD_TYPE STREQUAL "Release")
31+
set(CMAKE_OSX_ARCHITECTURES "x86_64;arm64" CACHE STRING "Build architectures for macOS" FORCE)
32+
else()
33+
set(CMAKE_OSX_ARCHITECTURES "${CMAKE_HOST_SYSTEM_PROCESSOR}" CACHE STRING "Build architectures for macOS" FORCE)
34+
endif()
35+
# Set Xcode attributes for universal binary build
36+
set_target_properties(${TARGET} PROPERTIES XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH[variant=Debug] YES)
37+
38+
# Set Xcode attributes for code signing
39+
# set(CMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM 686EDA2T8T)
40+
# set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "Developer ID Application")
41+
# set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_STYLE "Manual")
42+
43+
endif()
44+
45+
# Create base interface library for common settings
46+
add_library(_base INTERFACE)
47+
iplug_target_add(_base INTERFACE
48+
INCLUDE ${PROJECT_DIR} ${PROJECT_DIR}/resources
49+
# Replace with e.g. iPlug2_Skia_GL2 if you need Skia support
50+
LINK iPlug2_NanoVG_GL2
51+
FEATURE cxx_std_17
52+
)
53+
54+
# APP target configuration
55+
set(TARGET app)
56+
add_executable(${TARGET} WIN32 MACOSX_BUNDLE ${SRC_FILES})
57+
iplug_target_add(${TARGET} PUBLIC
58+
LINK iPlug2_APP _base
59+
RESOURCE ${RESOURCES}
60+
)
61+
iplug_configure_target(${TARGET} app)
62+
63+
# CLAP target configuration
64+
set(TARGET clap)
65+
add_library(${TARGET} MODULE ${SRC_FILES})
66+
iplug_target_add(${TARGET} PUBLIC
67+
LINK iPlug2_CLAP _base
68+
RESOURCE ${RESOURCES}
69+
)
70+
iplug_configure_target(${TARGET} clap)
71+
72+
# VST2 target configuration
73+
# set(TARGET vst2)
74+
# add_library(${TARGET} MODULE ${SRC_FILES})
75+
# iplug_target_add(${TARGET} PUBLIC
76+
# LINK iPlug2_VST2 _base
77+
# RESOURCE ${RESOURCES}
78+
# )
79+
# iplug_configure_target(${TARGET} vst2)
80+
81+
# VST3 target configuration
82+
set(TARGET vst3)
83+
add_library(${TARGET} MODULE ${SRC_FILES})
84+
iplug_target_add(${TARGET} PUBLIC
85+
LINK iPlug2_VST3 _base
86+
RESOURCE ${RESOURCES}
87+
)
88+
iplug_configure_target(${TARGET} vst3)
89+
90+
# AUv2 target configuration (macOS only)
91+
if(APPLE)
92+
set(TARGET auv2)
93+
add_library(${TARGET} MODULE ${SRC_FILES})
94+
iplug_target_add(${TARGET} PUBLIC
95+
LINK iPlug2_AUv2 _base
96+
RESOURCE ${RESOURCES}
97+
)
98+
iplug_configure_target(${TARGET} auv2)
99+
endif()
100+
101+
# Windows-specific resource configuration
102+
if(WIN32)
103+
set(CMAKE_RC_FLAGS "/I${PROJECT_DIR}/resources /I${PROJECT_DIR}/resources/fonts /I${PROJECT_DIR}/resources/img ${CMAKE_RC_FLAGS}")
104+
endif()

0 commit comments

Comments
 (0)