Skip to content

Commit 8966d7a

Browse files
committed
Get XCode CMake project to build
1 parent a2fd276 commit 8966d7a

1 file changed

Lines changed: 58 additions & 26 deletions

File tree

CMakeLists.txt

Lines changed: 58 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ foreach(_v ${VERSION_LIST})
1212
endforeach()
1313
string(REPLACE "." "," GUI_VERSION_COMMA ${GUI_VERSION})
1414

15+
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.9)
16+
set(CMAKE_OSX_SYSROOT "")
17+
1518
project(open-ephys-GUI)
1619
if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
1720
set(LINUX 1)
@@ -38,42 +41,47 @@ set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS
3841
JUCE_APP_VERSION=${GUI_VERSION}
3942
JUCE_APP_VERSION_HEX=${GUI_VERSION_HEX}
4043
)
41-
44+
45+
if (APPLE)
46+
set(JUCE_FILES_EXTENSION mm)
47+
else()
48+
set(JUCE_FILES_EXTENSION cpp)
49+
endif()
4250

4351

4452
#create executable and add JUCE components
45-
add_executable(open-ephys
53+
add_executable(open-ephys
4654
${JUCE_DIRECTORY}/AppConfig.h
4755
${JUCE_DIRECTORY}/JuceHeader.h
4856
${JUCE_DIRECTORY}/BinaryData.h
4957
${JUCE_DIRECTORY}/BinaryData.cpp
50-
${JUCE_DIRECTORY}/juce_audio_basics.cpp
51-
${JUCE_DIRECTORY}/juce_audio_devices.cpp
52-
${JUCE_DIRECTORY}/juce_audio_formats.cpp
53-
${JUCE_DIRECTORY}/juce_audio_processors.cpp
54-
${JUCE_DIRECTORY}/juce_audio_utils.cpp
55-
${JUCE_DIRECTORY}/juce_core.cpp
56-
${JUCE_DIRECTORY}/juce_cryptography.cpp
57-
${JUCE_DIRECTORY}/juce_data_structures.cpp
58-
${JUCE_DIRECTORY}/juce_events.cpp
59-
${JUCE_DIRECTORY}/juce_graphics.cpp
60-
${JUCE_DIRECTORY}/juce_gui_basics.cpp
61-
${JUCE_DIRECTORY}/juce_gui_extra.cpp
62-
${JUCE_DIRECTORY}/juce_opengl.cpp
63-
${JUCE_DIRECTORY}/juce_video.cpp
58+
${JUCE_DIRECTORY}/juce_audio_basics.${JUCE_FILES_EXTENSION}
59+
${JUCE_DIRECTORY}/juce_audio_devices.${JUCE_FILES_EXTENSION}
60+
${JUCE_DIRECTORY}/juce_audio_formats.${JUCE_FILES_EXTENSION}
61+
${JUCE_DIRECTORY}/juce_audio_processors.${JUCE_FILES_EXTENSION}
62+
${JUCE_DIRECTORY}/juce_audio_utils.${JUCE_FILES_EXTENSION}
63+
${JUCE_DIRECTORY}/juce_core.${JUCE_FILES_EXTENSION}
64+
${JUCE_DIRECTORY}/juce_cryptography.${JUCE_FILES_EXTENSION}
65+
${JUCE_DIRECTORY}/juce_data_structures.${JUCE_FILES_EXTENSION}
66+
${JUCE_DIRECTORY}/juce_events.${JUCE_FILES_EXTENSION}
67+
${JUCE_DIRECTORY}/juce_graphics.${JUCE_FILES_EXTENSION}
68+
${JUCE_DIRECTORY}/juce_gui_basics.${JUCE_FILES_EXTENSION}
69+
${JUCE_DIRECTORY}/juce_gui_extra.${JUCE_FILES_EXTENSION}
70+
${JUCE_DIRECTORY}/juce_opengl.${JUCE_FILES_EXTENSION}
71+
${JUCE_DIRECTORY}/juce_video.${JUCE_FILES_EXTENSION}
6472
${RESOURCES_DIRECTORY}/Build-files/resources.rc
6573
)
6674

6775

6876

6977
target_include_directories(open-ephys PRIVATE ${JUCE_DIRECTORY} ${JUCE_DIRECTORY}/modules)
7078
target_compile_features(open-ephys PUBLIC cxx_auto_type cxx_generalized_initializers)
71-
79+
7280
#output folders and specific options
7381
if (MSVC OR LINUX)
7482
set(BIN_PLUGIN_DIR $<TARGET_FILE_DIR:open-ephys>/plugins)
7583
set(BIN_SHARED_DIR $<TARGET_FILE_DIR:open-ephys>/shared)
76-
add_custom_command(TARGET open-ephys POST_BUILD
84+
add_custom_command(TARGET open-ephys POST_BUILD
7785
COMMAND ${CMAKE_COMMAND} -E make_directory "${BIN_SHARED_DIR}"
7886
COMMAND ${CMAKE_COMMAND} -E make_directory "${BIN_PLUGIN_DIR}"
7987
)
@@ -91,12 +99,12 @@ if(MSVC)
9199
endif()
92100
set(_copysrc "${RESOURCES_DIRECTORY}/DLLs/${DLLDIR}/*.dll" )
93101
file(GLOB _dllfiles ${_copysrc})
94-
add_custom_command(TARGET open-ephys POST_BUILD
102+
add_custom_command(TARGET open-ephys POST_BUILD
95103
COMMAND ${CMAKE_COMMAND} -E copy ${_dllfiles} ${BIN_SHARED_DIR}
96104
)
97105
elseif(LINUX)
98106
if(${CMAKE_BUILD_TYPE} STREQUAL "Debug")
99-
107+
100108
elseif (${CMAKE_BUILD_TYPE} STREQUAL "Release")
101109
else()
102110
message(FATAL_ERROR "Invalid build type")
@@ -111,13 +119,13 @@ elseif(LINUX)
111119
target_compile_options(open-ephys PRIVATE -fPIC -rdynamic -fvisibility=hidden)
112120
target_compile_options(open-ephys PRIVATE -O3) #enable optimization for linux debug
113121
set_property(TARGET open-ephys PROPERTY RUNTIME_OUTPUT_DIRECTORY ${BASE_BUILD_DIRECTORY}/${CMAKE_BUILD_TYPE})
114-
122+
115123
set(_copysrc "${RESOURCES_DIRECTORY}/DLLs/Linux/*.so" )
116124
file(GLOB _dllfiles ${_copysrc})
117-
add_custom_command(TARGET open-ephys POST_BUILD
125+
add_custom_command(TARGET open-ephys POST_BUILD
118126
COMMAND ${CMAKE_COMMAND} -E copy ${_dllfiles} ${BIN_SHARED_DIR}
119127
)
120-
128+
121129
elseif(APPLE)
122130
set_property(TARGET open-ephys PROPERTY RUNTIME_OUTPUT_DIRECTORY ${BASE_BUILD_DIRECTORY}/XCode)
123131
set_target_properties(open-ephys PROPERTIES
@@ -131,11 +139,35 @@ elseif(APPLE)
131139
target_compile_options(open-ephys PRIVATE -fPIC -Wpartial-availability -Wno-inconsistent-missing-override -rdynamic)
132140
set_property(TARGET open-ephys APPEND_STRING PROPERTY LINK_FLAGS "-fPIC -rdynamic")
133141
target_link_libraries(open-ephys dl)
134-
142+
target_link_libraries(open-ephys
143+
"-framework Accelerate"
144+
"-framework AudioToolbox"
145+
"-framework Carbon"
146+
"-framework Cocoa"
147+
"-framework CoreAudio"
148+
"-framework CoreMIDI"
149+
"-framework DiscRecording"
150+
"-framework IOKit"
151+
"-framework OpenGL"
152+
"-framework QTKit"
153+
"-framework QuartzCore"
154+
"-framework WebKit"
155+
)
156+
135157
set_target_properties(open-ephys PROPERTIES
136158
XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT dwarf
159+
XCODE_ATTRIBUTE_GCC_INLINES_ARE_PRIVATE_EXTERN YES
160+
XCODE_ATTRIBUTE_GCC_WARN_ABOUT_RETURN_TYPE YES
161+
XCODE_ATTRIBUTE_GCC_WARN_CHECK_SWITCH_STATEMENTS YES
162+
XCODE_ATTRIBUTE_GCC_WARN_MISSING_PARENTHESES YES
163+
XCODE_ATTRIBUTE_GCC_WARN_NON_VIRTUAL_DESTRUCTOR YES
164+
XCODE_ATTRIBUTE_GCC_WARN_TYPECHECK_CALLS_TO_PRINTF YES
165+
XCODE_ATTRIBUTE_GCC_WARN_UNUSED_VARIABLE YES
166+
XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++0x"
167+
XCODE_ATTRIBUTE_GCC_C_LANGUAGE_STANDARD c99
168+
XCODE_ATTRIBUTE_CLANG_LINK_OBJC_RUNTIME NO
137169
)
138-
170+
139171
else()
140172
message( FATAL_ERROR "Unsupported OS")
141173
endif()
@@ -154,4 +186,4 @@ foreach( src_file IN ITEMS ${SRC_FILES})
154186
endforeach()
155187

156188
#Add plugin build files
157-
add_subdirectory(Plugins)
189+
#add_subdirectory(Plugins)

0 commit comments

Comments
 (0)