Browse Source

Cleanup cmakelists

merge-requests/365/head
Jørgen Lien Sellæg 11 years ago
parent
commit
9f60e210b7
  1. 19
      CMakeLists.txt
  2. 246
      src/CMakeLists.txt
  3. 9
      src/cmake/Modules/FindLibClangmm.cmake

19
CMakeLists.txt

@ -0,0 +1,19 @@
cmake_minimum_required (VERSION 2.8.4)
set(project_name juci)
set(module juci_to_python_api)
#### TODO WINDOWS SUPPORT ####
set(juci_config_folder "$ENV{HOME}/.juci")
set(bin_install_path "/usr/local/bin")
set(lib_install_path "/usr/local/lib/python2.7/dist-packages/")
#####
project (${project_name})
add_subdirectory("src")
install(
DIRECTORY "config" "plugins"
DESTINATION ${juci_config_folder}
USE_SOURCE_PERMISSIONS)

246
src/CMakeLists.txt

@ -1,164 +1,124 @@
cmake_minimum_required (VERSION 2.8.4)
set(project_name juci)
set(module juci_to_python_api)
project (${project_name})
add_definitions(-DBOOST_LOG_DYN_LINK)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -std=c++11 -pthread -Wall -Wno-reorder")
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_LIST_DIR}/cmake/Modules/")
#You are of course using Homebrew:
if(APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L/usr/local/opt/gettext/lib -I/usr/local/opt/gettext/include -undefined dynamic_lookup") #TODO: fix this
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L/usr/local/opt/gettext/lib -I/usr/local/opt/gettext/include -undefined dynamic_lookup") #T
set(CMAKE_MACOSX_RPATH 1)
set(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:/usr/local/lib/pkgconfig:/opt/X11/lib/pkgconfig")
endif()
INCLUDE(FindPkgConfig)
message("Searcing for libclang")
#LIBCLANG_FOUND System has libclang.
#LIBCLANG_INCLUDE_DIRS The libclang include directories.
#LIBCLANG_LIBRARIES The libraries needed to use libclang.
#LIBCLANG_LIBRARY_DIR The path to the directory containing libclang.
#LIBCLANG_KNOWN_LLVM_VERSIONS Known LLVM release numbers.
find_package(LibClangmm)
find_package(LibClang)
set(validation true)
function(install_help APPLE UNIX WINDOWS)
message("Install package with:")
if(UNIX)
if(APPLE)
message("brew install ${APPLE}")
else()
message("sudo apt-get install ${UNIX}")
endif(APPLE)
endif(UNIX)
if(WINDOWS)
message("choco install ${WINDOWS}")
endif(WINDOWS)
endfunction(install_help)
function(validate FOUND APPLE UNIX WINDOWS)
if(!${FOUND})
set(validation false)
install_help(${APPLE} ${UNIX} ${WINDOWS})
endif()
endfunction(validate)
if(${LCL_FOUND})
message("libclangmm libraries found. Continuing")
message("${LCL_INCLUDE_DIRS}")
else()
message(FATAL_ERROR "The libclangmm libraries are required. Quitting.")
endif()
find_package(LibClangmm)
validate(${LCL_FOUND} "clangmm" "clangmm" "clangmm")
if(${LIBCLANG_FOUND})
message("libclangmm libraries found. Continuing")
message("${LIBCLANG_INCLUDE_DIRS}")
else()
message(FATAL_ERROR "The libclangmm libraries are required. Quitting.")
endif()
find_package(LibClang)
validate(${LIBCLANG_FOUND} "clang" "libclang-dev" "llvm")
#### Finding boost, the variables below is set #####
#PYTHONLIBS_FOUND - True if headers and requested libraries were found
#PYTHON_INCLUDE_DIRS - Boost include directories
#PYTHON_LIBRARIES - Boost component libraries to be linked
find_package(PythonLibs 2.7)
validate(${PYTHONLIBS_FOUND} "python" "libpython-dev" "python")
#If python is found
if(${PYTHONLIBS_FOUND})
message("Python libraries found. Continuing")
else()
message("Please install python libraries. The libraries where not found.")
message("Python include dirs: ${PYTHON_INCLUDE_DIRS}")
message("Python link dirs ${PYTHON_LIBRARIES}")
message(FATAL_ERROR "The python libraries are required. Quitting.")
endif()
#### Finding boost, the variables below is set #####
#Boost_FOUND - True if headers and requested libraries were found
#Boost_INCLUDE_DIRS - Boost include directories
#Boost_LIBRARY_DIRS - Link directories for Boost libraries
#Boost_LIBRARIES - Boost component libraries to be linked
find_package(Boost 1.55 COMPONENTS python thread log system filesystem REQUIRED)
validate(${Boost_FOUND} "boost" "libboost-all-dev" "boost")
#If boost is not found
if(${Boost_FOUND})
message("Boost libraries found. Continuing")
else()
message("Please install boost libraries. The libraries where not found.")
message("Boost library dirs: ${Boost_LIBRARY_DIRS}")
message("Boost include dirs: ${Boost_INCLUDE_DIRS}")
message("Boost link dirs ${Boost_LIBRARIES}")
message(FATAL_ERROR "The boost libraries are required. Quitting.")
endif()
#### Finding gtkmm, the variables below is set #####
#GTKMM_FOUND - True if headers and requested libraries were found
#GTKMM_INCLUDE_DIRS - GTKMM include directories
#GTKMM_LIBRARY_DIRS - Link directories for GTKMM libraries
#GTKMM_LIBRARIES - GTKMM libraries to be linked
pkg_check_modules(GTKMM gtkmm-3.0) # The name GTKMM is set here for the variables abouve
#If gtkmm is not found
if(${GTKMM_FOUND})
message("Gtkmm libraries found. Continuing")
else()
message("Please install gtkmm libraries. The libraries where not found.")
message("Gtkmm library dirs ${GTKMM_LIBRARY_DIRS}")
message("Gtkmm include dirs ${GTKMM_INCLUDE_DIRS}")
message("Gtkmm link dirs ${GTKMM_LIBRARIES}")
message(FATAL_ERROR "The gtkmm libraries are required. Quitting.")
endif()
validate(${GTKMM_FOUND} "gtkmm" "libgtkmm-dev" "gtkmm")
pkg_check_modules(GTKSVMM gtksourceviewmm-3.0)
if(${GTKSVMM_FOUND})
message("Gtksourceviewmm libraries found. Continuing")
else()
message(FATAL_ERROR "The gtksourceviewmm libraries are required. Quitting.")
endif()
# name of the executable on Windows will be example.exe
add_executable(${project_name}
#list of every needed file to create the executable
juci.h
juci.cc
menu.h
menu.cc
source.h
source.cc
selectiondialog.h
selectiondialog.cc
config.h
config.cc
sourcefile.h
sourcefile.cc
window.cc
window.h
api.h
api.cc
notebook.cc
notebook.h
entrybox.h
entrybox.cc
directories.h
directories.cc
terminal.h
terminal.cc
tooltips.h
tooltips.cc
singletons.h
singletons.cc
)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
add_library(${module} SHARED
api
api_ext
)
# dependencies
include_directories(
${Boost_INCLUDE_DIRS}
${PYTHON_INCLUDE_DIRS}
${GTKMM_INCLUDE_DIRS}
${GTKSVMM_INCLUDE_DIRS}
${LCL_INCLUDE_DIRS}
${LIBCLANG_INCLUDE_DIRS}
)
link_directories(
${GTKMM_LIBRARY_DIRS}
${GTKSVMM_LIBRARY_DIRS}
${Boost_LIBRARY_DIRS}
${PYTHON_INCLUDE_DIRS}
${LCL_LIBRARY_DIRS}
${LIBCLANG_LIBRARY_DIRS}
)
#module:
set_target_properties(${module} PROPERTIES PREFIX ""
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/lib/")
target_link_libraries(${module} ${PYTHON_LIBRARIES} ${Boost_LIBRARIES})
#executable:
target_link_libraries(${project_name} ${LIVCLANG_LIBRARIES} ${LCL_LIBRARIES} ${GTKMM_LIBRARIES} ${GTKSVMM_LIBRARIES} ${Boost_LIBRARIES} ${PYTHON_LIBRARIES})
validate(${GTKSVMM_FOUND} "gtksvmm" "libgtksvmm-dev" "gtkmmsv")
if(${validation})
add_executable(${project_name}
juci.h
juci.cc
menu.h
menu.cc
source.h
source.cc
selectiondialog.h
selectiondialog.cc
config.h
config.cc
sourcefile.h
sourcefile.cc
window.cc
window.h
api.h
api.cc
notebook.cc
notebook.h
entrybox.h
entrybox.cc
directories.h
directories.cc
terminal.h
terminal.cc
tooltips.h
tooltips.cc
singletons.h
singletons.cc)
add_library(${module} SHARED
api
api_ext)
include_directories(
${Boost_INCLUDE_DIRS}
${PYTHON_INCLUDE_DIRS}
${GTKMM_INCLUDE_DIRS}
${GTKSVMM_INCLUDE_DIRS}
${LCL_INCLUDE_DIRS}
${LIBCLANG_INCLUDE_DIRS})
link_directories(
${GTKMM_LIBRARY_DIRS}
${GTKSVMM_LIBRARY_DIRS}
${Boost_LIBRARY_DIRS}
${PYTHON_INCLUDE_DIRS}
${LCL_LIBRARY_DIRS}
${LIBCLANG_LIBRARY_DIRS})
set_target_properties(${module}
PROPERTIES PREFIX ""
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/lib/")
target_link_libraries(${module} ${PYTHON_LIBRARIES} ${Boost_LIBRARIES})
target_link_libraries(${project_name}
${LIBCLANG_LIBRARIES}
${LCL_LIBRARIES}
${GTKMM_LIBRARIES}
${GTKSVMM_LIBRARIES}
${Boost_LIBRARIES}
${PYTHON_LIBRARIES})
install(TARGETS ${project_name} ${module}
RUNTIME DESTINATION ${bin_install_path}
LIBRARY DESTINATION ${lib_install_path}
)
endif(${validation})

9
src/cmake/Modules/FindLibClangmm.cmake

@ -1,20 +1,15 @@
# - Try to find LCL
# Once done this will define
# LCL_FOUND - Libclangmm is available
# LCL_INCLUDE_DIRS - The libclangmm include directories
# LCL_LIBRARIES -
# LCL_DEFINITIONS - Compiler switches required for using libclangmm
find_package(PkgConfig)
find_path(LCL_INCLUDE_DIR clangmm.h
HINTS "/usr/local/lib/libclangmm/include/"
HINTS "/usr/local/include/libclangmm/"
)
find_library(LCL_LIBRARY NAMES clangmm
HINTS "/usr/local/lib/libclangmm/"
HINTS "/usr/local/lib/"
)
set(LCL_LIBRARIES ${LCL_LIBRARY} )

Loading…
Cancel
Save