Skip to content
This repository has been archived by the owner on Mar 16, 2021. It is now read-only.

Commit

Permalink
CMake generates nicer projects in Mac OSX
Browse files Browse the repository at this point in the history
Should work correctly to generate 32/64 bit builds, compiler flags are a bit
less hacky, other CMakeLists cleanups.
  • Loading branch information
nikreiman committed Jan 18, 2014
1 parent 1e9e1bd commit 9c5666e
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 71 deletions.
46 changes: 19 additions & 27 deletions main/CMakeLists.txt
@@ -1,46 +1,38 @@
cmake_minimum_required(VERSION 2.6)
project(mrswatsonmain)

# TODO: Probably can remove this
include_directories(${CMAKE_SOURCE_DIR}/source)
link_directories(${CMAKE_SOURCE_DIR}/source)
file(GLOB mrswatsonmain_SOURCES *.c)

# On unix, we can build both the 32/64 bit versions at once. However with
# Visual Studio we need to generate two separate out-of-source build dirs,
# one for each architecture.
file(GLOB mrswatsonmain_HEADERS *.h)

if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
add_executable(mrswatson ${mrswatsonmain_SOURCES})
add_executable(mrswatson ${mrswatsonmain_SOURCES} ${mrswatsonmain_HEADERS})
set_target_properties(mrswatson PROPERTIES COMPILE_FLAGS "-m32")
set_target_properties(mrswatson PROPERTIES LINK_FLAGS "-m32")
target_link_libraries(mrswatson mrswatsoncore dl)
elseif(APPLE)
add_executable(mrswatson ${mrswatsonmain_SOURCES})
set_target_properties(mrswatson PROPERTIES COMPILE_FLAGS "-arch i386")
set_target_properties(mrswatson PROPERTIES LINK_FLAGS "-arch i386")
target_link_libraries(mrswatson mrswatsoncore)
elseif(MSVC)
if(${platform_bits} EQUAL 32)
add_executable(mrswatson ${mrswatsonmain_SOURCES})
set_target_properties(mrswatson PROPERTIES COMPILE_FLAGS "/D WIN32=1")
target_link_libraries(mrswatson mrswatsoncore)
endif()
endif()

if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
add_executable(mrswatson64 ${mrswatsonmain_SOURCES})
add_executable(mrswatson64 ${mrswatsonmain_SOURCES} ${mrswatsonmain_HEADERS})
set_target_properties(mrswatson64 PROPERTIES COMPILE_FLAGS "-m64")
set_target_properties(mrswatson64 PROPERTIES LINK_FLAGS "-m64")
target_link_libraries(mrswatson64 mrswatsoncore64 dl)
elseif(APPLE)
add_executable(mrswatson64 ${mrswatsonmain_SOURCES})
set_target_properties(mrswatson64 PROPERTIES COMPILE_FLAGS "-arch x86_64")
set_target_properties(mrswatson64 PROPERTIES LINK_FLAGS "-arch x86_64")
add_executable(mrswatson ${mrswatsonmain_SOURCES} ${mrswatsonmain_HEADERS})
set_target_properties(mrswatson PROPERTIES OSX_ARCHITECTURES "i386")
target_link_libraries(mrswatson mrswatsoncore)

add_executable(mrswatson64 ${mrswatsonmain_SOURCES} ${mrswatsonmain_HEADERS})
set_target_properties(mrswatson64 PROPERTIES OSX_ARCHITECTURES "x86_64")
target_link_libraries(mrswatson64 mrswatsoncore64)
elseif(MSVC)
if(${platform_bits} EQUAL 64)
add_executable(mrswatson64 ${mrswatsonmain_SOURCES})
# On unix, we can build both the 32/64 bit versions at once. However with
# Visual Studio we need to generate two separate out-of-source build dirs,
# one for each architecture.
# TODO: There must be some way to fix this, Juce manages to do it...
if(${platform_bits} EQUAL 32)
add_executable(mrswatson ${mrswatsonmain_SOURCES} ${mrswatsonmain_HEADERS})
set_target_properties(mrswatson PROPERTIES COMPILE_FLAGS "/D WIN32=1")
target_link_libraries(mrswatson mrswatsoncore)
elseif(${platform_bits} EQUAL 64)
add_executable(mrswatson64 ${mrswatsonmain_SOURCES} ${mrswatsonmain_HEADERS})
set_target_properties(mrswatson64 PROPERTIES COMPILE_FLAGS "/MACHINE:X64 /D WIN64=1")
target_link_libraries(mrswatson64 mrswatsoncore64)
endif()
Expand Down
30 changes: 12 additions & 18 deletions source/CMakeLists.txt
Expand Up @@ -4,35 +4,29 @@ project(mrswatsoncore)
file(GLOB mrswatsoncore_SOURCES *.c */*.c */*.cpp)
file(GLOB mrswatsoncore_HEADERS *.h */*.h)

# On unix, we can build both the 32/64 bit versions at once. However with
# Visual Studio we need to generate two separate out-of-source build dirs,
# one for each architecture.

if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
add_library(mrswatsoncore ${mrswatsoncore_SOURCES} ${mrswatsoncore_HEADERS})
set_target_properties(mrswatsoncore PROPERTIES COMPILE_FLAGS "-m32")
set_target_properties(mrswatsoncore PROPERTIES LINK_FLAGS "-m32")
elseif(APPLE)
add_library(mrswatsoncore ${mrswatsoncore_SOURCES} ${mrswatsoncore_HEADERS})
set_target_properties(mrswatsoncore PROPERTIES COMPILE_FLAGS "-arch i386")
set_target_properties(mrswatsoncore PROPERTIES LINK_FLAGS "-arch i386")
elseif(MSVC)
if(${platform_bits} EQUAL 32)
add_library(mrswatsoncore ${mrswatsoncore_SOURCES} ${mrswatsoncore_HEADERS})
set_target_properties(mrswatsoncore PROPERTIES COMPILE_FLAGS "/D WIN32=1")
endif()
endif()

if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
add_library(mrswatsoncore64 ${mrswatsoncore_SOURCES} ${mrswatsoncore_HEADERS})
set_target_properties(mrswatsoncore64 PROPERTIES COMPILE_FLAGS "-m64")
set_target_properties(mrswatsoncore64 PROPERTIES LINK_FLAGS "-m64")
elseif(APPLE)
add_library(mrswatsoncore ${mrswatsoncore_SOURCES} ${mrswatsoncore_HEADERS})
set_target_properties(mrswatsoncore PROPERTIES OSX_ARCHITECTURES "i386")

add_library(mrswatsoncore64 ${mrswatsoncore_SOURCES} ${mrswatsoncore_HEADERS})
set_target_properties(mrswatsoncore64 PROPERTIES COMPILE_FLAGS "-arch x86_64")
set_target_properties(mrswatsoncore64 PROPERTIES LINK_FLAGS "-arch x86_64")
set_target_properties(mrswatsoncore64 PROPERTIES OSX_ARCHITECTURES "x86_64")
elseif(MSVC)
if(${platform_bits} EQUAL 64)
# On unix, we can build both the 32/64 bit versions at once. However with
# Visual Studio we need to generate two separate out-of-source build dirs,
# one for each architecture.
# TODO: There must be some way to fix this, Juce manages to do it...
if(${platform_bits} EQUAL 32)
add_library(mrswatsoncore ${mrswatsoncore_SOURCES} ${mrswatsoncore_HEADERS})
set_target_properties(mrswatsoncore PROPERTIES COMPILE_FLAGS "/D WIN32=1")
elseif(${platform_bits} EQUAL 64)
add_library(mrswatsoncore64 ${mrswatsoncore_SOURCES} ${mrswatsoncore_HEADERS})
set_target_properties(mrswatsoncore64 PROPERTIES COMPILE_FLAGS "/MACHINE:X64 /D WIN64=1")
endif()
Expand Down
45 changes: 19 additions & 26 deletions test/CMakeLists.txt
@@ -1,45 +1,38 @@
cmake_minimum_required(VERSION 2.6)
project(mrswatsontest)

include_directories(${CMAKE_SOURCE_DIR}/source)
link_directories(${CMAKE_SOURCE_DIR}/source)
file(GLOB mrswatsontest_SOURCES *.c */*.c)

# On unix, we can build both the 32/64 bit versions at once. However with
# Visual Studio we need to generate two separate out-of-source build dirs,
# one for each architecture.
file(GLOB mrswatsontest_HEADERS *.h */*.h)

if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
add_executable(mrswatsontest ${mrswatsontest_SOURCES})
add_executable(mrswatsontest ${mrswatsontest_SOURCES} ${mrswatsontest_HEADERS})
set_target_properties(mrswatsontest PROPERTIES COMPILE_FLAGS "-m32")
set_target_properties(mrswatsontest PROPERTIES LINK_FLAGS "-m32")
target_link_libraries(mrswatsontest mrswatsoncore dl)
elseif(APPLE)
add_executable(mrswatsontest ${mrswatsontest_SOURCES})
set_target_properties(mrswatsontest PROPERTIES COMPILE_FLAGS "-arch i386")
set_target_properties(mrswatsontest PROPERTIES LINK_FLAGS "-arch i386")
target_link_libraries(mrswatsontest mrswatsoncore)
elseif(MSVC)
if(${platform_bits} EQUAL 32)
add_executable(mrswatsontest ${mrswatsontest_SOURCES})
set_target_properties(mrswatsontest PROPERTIES COMPILE_FLAGS "/D WIN32=1")
target_link_libraries(mrswatsontest mrswatsoncore)
endif()
endif()

if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
add_executable(mrswatsontest64 ${mrswatsontest_SOURCES})
add_executable(mrswatsontest64 ${mrswatsontest_SOURCES} ${mrswatsontest_HEADERS})
set_target_properties(mrswatsontest64 PROPERTIES COMPILE_FLAGS "-m64")
set_target_properties(mrswatsontest64 PROPERTIES LINK_FLAGS "-m64")
target_link_libraries(mrswatsontest64 mrswatsoncore64 dl)
elseif(APPLE)
add_executable(mrswatsontest64 ${mrswatsontest_SOURCES})
set_target_properties(mrswatsontest64 PROPERTIES COMPILE_FLAGS "-arch x86_64")
set_target_properties(mrswatsontest64 PROPERTIES LINK_FLAGS "-arch x86_64")
add_executable(mrswatsontest ${mrswatsontest_SOURCES} ${mrswatsontest_HEADERS})
set_target_properties(mrswatsontest PROPERTIES OSX_ARCHITECTURES "i386")
target_link_libraries(mrswatsontest mrswatsoncore)

add_executable(mrswatsontest64 ${mrswatsontest_SOURCES} ${mrswatsontest_HEADERS})
set_target_properties(mrswatsontest64 PROPERTIES OSX_ARCHITECTURES "x86_64")
target_link_libraries(mrswatsontest64 mrswatsoncore64)
elseif(MSVC)
if(${platform_bits} EQUAL 64)
add_executable(mrswatsontest64 ${mrswatsontest_SOURCES})
# On unix, we can build both the 32/64 bit versions at once. However with
# Visual Studio we need to generate two separate out-of-source build dirs,
# one for each architecture.
# TODO: There must be some way to fix this, Juce manages to do it...
if(${platform_bits} EQUAL 32)
add_executable(mrswatsontest ${mrswatsontest_SOURCES} ${mrswatsontest_HEADERS})
set_target_properties(mrswatsontest PROPERTIES COMPILE_FLAGS "/D WIN32=1")
target_link_libraries(mrswatsontest mrswatsoncore)
elseif(${platform_bits} EQUAL 64)
add_executable(mrswatsontest64 ${mrswatsontest_SOURCES} ${mrswatsontest_HEADERS})
set_target_properties(mrswatsontest64 PROPERTIES COMPILE_FLAGS "/MACHINE:X64 /D WIN64=1")
target_link_libraries(mrswatsontest64 mrswatsoncore64)
endif()
Expand Down

0 comments on commit 9c5666e

Please sign in to comment.