-
Notifications
You must be signed in to change notification settings - Fork 11
Description
To make the project more portable something like CMake would help a lot. Basically CMake is a project generator, on my mac it has the following targets, on windows it would have several visual studio projects as well:
The following generators are available on this platform:
Unix Makefiles = Generates standard UNIX makefiles.
Ninja = Generates build.ninja files.
Xcode = Generate Xcode project files.
CodeBlocks - Ninja = Generates CodeBlocks project files.
CodeBlocks - Unix Makefiles = Generates CodeBlocks project files.
CodeLite - Ninja = Generates CodeLite project files.
CodeLite - Unix Makefiles = Generates CodeLite project files.
Eclipse CDT4 - Ninja = Generates Eclipse CDT 4.0 project files.
Eclipse CDT4 - Unix Makefiles= Generates Eclipse CDT 4.0 project files.
KDevelop3 = Generates KDevelop 3 project files.
KDevelop3 - Unix Makefiles = Generates KDevelop 3 project files.
Kate - Ninja = Generates Kate project files.
Kate - Unix Makefiles = Generates Kate project files.
Sublime Text 2 - Ninja = Generates Sublime Text 2 project files.
Sublime Text 2 - Unix Makefiles
= Generates Sublime Text 2 project files.
I spent a little time this morning trying to remember how to use it and got far enough that it generates a project (but doesn't compile all the way).
GSharp/CMakeLists.txt
cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)
project (GSharp)
## Set the build type
if( NOT CMAKE_BUILD_TYPE )
set( CMAKE_BUILD_TYPE "Release"
CACHE STRING "Build configuration 'Release' or 'Debug'."
FORCE )
endif()
## Install the executable to <install_directory>/bin
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
## Install libraries (if any) to <install_directory>/bin
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
add_subdirectory(${PROJECT_SOURCE_DIR}/src)
add_subdirectory(${PROJECT_SOURCE_DIR}/include)
## C++ compiler options
set( CMAKE_CXX_FLAGS "-Wall -Wextra" )
set( CMAKE_CXX_FLAGS_DEBUG "-g -O0" )
set( CMAKE_CXX_FLAGS_RELEASE "-O3" )
set( BINARY_NAME "gs2g" )
set(ALL_SOURCE_FILES ${GSharp_SOURCE} ${GSharp_INCLUDE})
MESSAGE(${GSharp_SOURCE})
MESSAGE(${GSharp_INCLUDE})
MESSAGE(${ALL_SOURCE_FILES})
#add_executable( ${BINARY_NAME} example.cpp ${ALL_SOURCE_FILES})
add_executable( ${BINARY_NAME} example.cpp)
# Require C++11
set_property(TARGET ${BINARY_NAME} PROPERTY CXX_STANDARD 11)
set_property(TARGET ${BINARY_NAME} PROPERTY CXX_STANDARD_REQUIRED ON)
GSharp/include/CMakeLists.txt
set (GSharp_INCLUDE
${CMAKE_CURRENT_LIST_DIR}/gsharp.h
${CMAKE_CURRENT_LIST_DIR}/gsharp_extra.h
PARENT_SCOPE)
GSharp/src/CMakeLists.txt
set (GSharp_SOURCE
${CMAKE_CURRENT_LIST_DIR}/gsharp.h
${CMAKE_CURRENT_LIST_DIR}/gsharp_extra.h
${CMAKE_CURRENT_LIST_DIR}/gsharp.cpp
${CMAKE_CURRENT_LIST_DIR}/gsharp_except.h
${CMAKE_CURRENT_LIST_DIR}/gsharp_parser.cpp
${CMAKE_CURRENT_LIST_DIR}/gsharp_program.cpp
${CMAKE_CURRENT_LIST_DIR}/gsharp_program.h
${CMAKE_CURRENT_LIST_DIR}/version.h
PARENT_SCOPE)
To generate a Makefile and build:
cd ~/GSharp
mkdir build
cd build
cmake ..
make