Skip to content

Commit ff3abf5

Browse files
committed
Fixup MacOS builds -- must use Xcode generator
1 parent a527e09 commit ff3abf5

3 files changed

Lines changed: 52 additions & 23 deletions

File tree

CMakeLists.txt

Lines changed: 43 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,38 @@
1-
cmake_minimum_required(VERSION 3.5)
1+
cmake_minimum_required(VERSION 3.12)
2+
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "Minimum MacOS deployment version")
23

34
project(AudioCapture
45
DESCRIPTION "Capture audio and stream it over LabStreamingLayer"
56
HOMEPAGE_URL "https://github.com/labstreaminglayer/App-AudioCapture/"
67
LANGUAGES CXX C
78
VERSION 0.1)
89

9-
# Find an installed liblsl in paths set by the user (LSL_INSTALL_ROOT)
10-
# and some default paths
10+
# Needed for customized MacOSXBundleInfo.plist.in
11+
SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake" ${CMAKE_MODULE_PATH})
12+
13+
set(CMAKE_CXX_STANDARD 17)
14+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
15+
16+
17+
## Qt
18+
set(CMAKE_AUTOMOC ON) # The later version of this in LSLCMake is somehow not enough.
19+
set(CMAKE_AUTORCC ON)
20+
set(CMAKE_AUTOUIC ON)
21+
find_package(Qt6 COMPONENTS Core Widgets Network DBus Multimedia) # Multimedia requires Qt6.2
22+
if(NOT Qt6_FOUND)
23+
if(APPLE)
24+
list(APPEND CMAKE_PREFIX_PATH "/usr/local/opt/qt@5")
25+
endif()
26+
# If we require 5.15 then we can use version-agnostic linking, but 5.15 not easily available on Ubuntu.
27+
find_package(Qt5 COMPONENTS Core Widgets Network DBus Multimedia REQUIRED)
28+
add_executable(${PROJECT_NAME} MACOSX_BUNDLE)
29+
set(LSLAPP_QT_VER Qt5)
30+
else()
31+
qt_add_executable(${PROJECT_NAME} MACOSX_BUNDLE MANUAL_FINALIZATION)
32+
set(LSLAPP_QT_VER Qt)
33+
endif()
34+
35+
# LSL
1136
find_package(LSL REQUIRED
1237
HINTS ${LSL_INSTALL_ROOT}
1338
"${CMAKE_CURRENT_LIST_DIR}/../../LSL/liblsl/build/"
@@ -16,16 +41,10 @@ find_package(LSL REQUIRED
1641
"${CMAKE_CURRENT_LIST_DIR}/../../LSL/liblsl/out/install/x64-Release"
1742
PATH_SUFFIXES share/LSL)
1843
get_filename_component(LSL_PATH ${LSL_CONFIG} DIRECTORY)
19-
message(STATUS "Found LSL lib in ${LSL_PATH}")
2044

21-
set(CMAKE_INCLUDE_CURRENT_DIR ON)
22-
set(CMAKE_AUTOMOC ON)
23-
set(CMAKE_AUTOUIC ON)
24-
set(CMAKE_AUTORCC ON)
25-
find_package(Qt5 REQUIRED COMPONENTS Widgets Multimedia)
2645
find_package(Threads REQUIRED)
2746

28-
add_executable(${PROJECT_NAME} MACOSX_BUNDLE WIN32
47+
target_sources(${PROJECT_NAME} PRIVATE
2948
main.cpp
3049
mainwindow.cpp
3150
mainwindow.h
@@ -36,28 +55,26 @@ add_executable(${PROJECT_NAME} MACOSX_BUNDLE WIN32
3655

3756
target_link_libraries(${PROJECT_NAME}
3857
PRIVATE
39-
Qt5::Widgets
40-
Qt5::Multimedia
58+
${LSLAPP_QT_VER}::Widgets
59+
${LSLAPP_QT_VER}::Multimedia
4160
Threads::Threads
4261
LSL::lsl
4362
)
44-
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14)
45-
# target_compile_features(${PROJECT_NAME} PRIVATE cxx_auto_type cxx_lambda_init_captures)
46-
4763

64+
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED "NO")
4865
set_target_properties(${PROJECT_NAME} PROPERTIES
49-
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_LIST_DIR}/MacOSXBundleInfo.plist"
50-
MACOSX_BUNDLE_GUI_IDENTIFIER "LabStreamingLayer.AudioCapture")
66+
XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO"
67+
)
5168

5269
# Copy the required dll's into the build folder --> useful for debugging from IDE
5370
# create a list of files to copy
5471
set(THIRD_PARTY_DLLS
5572
LSL::lsl
56-
Qt5::Core
57-
Qt5::Gui
58-
Qt5::Widgets
59-
Qt5::Multimedia
60-
Qt5::Network
73+
${LSLAPP_QT_VER}::Core
74+
${LSLAPP_QT_VER}::Gui
75+
${LSLAPP_QT_VER}::Widgets
76+
${LSLAPP_QT_VER}::Multimedia
77+
${LSLAPP_QT_VER}::Network
6178
)
6279

6380
foreach(_lib ${THIRD_PARTY_DLLS})
@@ -67,5 +84,9 @@ foreach(_lib ${THIRD_PARTY_DLLS})
6784
$<TARGET_FILE_DIR:${PROJECT_NAME}>)
6885
endforeach()
6986

87+
if(Qt6_FOUND)
88+
qt_finalize_executable(${PROJECT_NAME})
89+
endif()
90+
7091
installLSLApp(${PROJECT_NAME})
7192
LSLGenerateCPackConfig()

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@ Using this app is very simple:
2323
# Build
2424

2525
The build instructions for this app are mostly the same as the [generic LSL App build instructions](https://labstreaminglayer.readthedocs.io/dev/app_build.html).
26-
Qt5 Multimedia module is required. On Ubuntu this does not come with qt5 by default. Install it with `sudo apt-get install qtmultimedia5-dev`.
26+
Qt Multimedia module is required. On Ubuntu this does not come with qt5 by default. Install it with `sudo apt-get install qtmultimedia5-dev`. On Mac, with homebrew, it is only included in qt6 >= 6.2, which isn't out yet, so qt5 is required.
27+
On Mac, it appears to be necessary to use the Xcode generator: `cmake -B build -S . -DCMAKE_INSTALL_PREFIX="build/install" -G Xcode`
2728

29+
Note that code-signing has been disabled.
2830

2931
# Further Notes
3032

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,15 @@
2828
<string>${MACOSX_BUNDLE_BUNDLE_VERSION}</string>
2929
<key>CSResourcesFileMapped</key>
3030
<true/>
31+
<key>LSRequiresCarbon</key>
32+
<true/>
3133
<key>NSHumanReadableCopyright</key>
3234
<string>${MACOSX_BUNDLE_COPYRIGHT}</string>
35+
<key>NSHighResolutionCapable</key>
36+
<true/>
3337
<key>NSMicrophoneUsageDescription</key>
3438
<string>Copy audio to LSL stream.</string>
39+
<key>NSPrincipalClass</key>
40+
<string>NSApplication</string>
3541
</dict>
3642
</plist>

0 commit comments

Comments
 (0)