mirror of https://gitlab.com/cppit/jucipp
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
161 lines
4.5 KiB
161 lines
4.5 KiB
add_definitions(-DBOOST_LOG_DYN_LINK) |
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -std=c++11 -pthread -Wall -Wextra -Wno-unused-parameter -Wno-reorder") |
|
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_LIST_DIR}/cmake/Modules/") |
|
|
|
if(APPLE) |
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -undefined dynamic_lookup") |
|
link_directories(/usr/local/lib /usr/local/opt/gettext/lib) |
|
include_directories(/usr/local/opt/gettext/include) |
|
set(CMAKE_MACOSX_RPATH 1) |
|
set(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:/usr/local/lib/pkgconfig:/opt/X11/lib/pkgconfig") |
|
endif() |
|
|
|
if(UNIX) #Checking if compiling on Ubuntu that for instance has a buggy menu system |
|
find_program(LSB_RELEASE_BIN lsb_release) |
|
if(LSB_RELEASE_BIN) |
|
execute_process(COMMAND ${LSB_RELEASE_BIN} -is |
|
OUTPUT_VARIABLE DISTRIBUTION OUTPUT_STRIP_TRAILING_WHITESPACE) |
|
if((DISTRIBUTION STREQUAL Ubuntu) OR (DISTRIBUTION STREQUAL LinuxMint)) |
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DJUCI_UBUNTU") |
|
endif() |
|
endif() |
|
endif() |
|
|
|
if(MSYS) |
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DMSYS_PROCESS_USE_SH") |
|
endif() |
|
|
|
find_package(LibClang REQUIRED) |
|
find_package(Boost 1.54 COMPONENTS regex system filesystem REQUIRED) |
|
find_package(ASPELL REQUIRED) |
|
set(LIBCLANGMM_INCLUDE_DIR ../libclangmm/src) |
|
set(TINY_PROCESS_INCLUDE_DIR ../tiny-process-library) |
|
|
|
string(REPLACE libclang liblldb LIBLLDB_LIBRARIES "${LIBCLANG_LIBRARIES}") |
|
if(EXISTS "${LIBLLDB_LIBRARIES}") |
|
set(LIBLLDB_FOUND TRUE) |
|
elseif(EXISTS "${LIBLLDB_LIBRARIES}.1") |
|
set(LIBLLDB_LIBRARIES "${LIBLLDB_LIBRARIES}.1") |
|
set(LIBLLDB_FOUND TRUE) |
|
endif() |
|
if(LIBLLDB_FOUND) |
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DJUCI_ENABLE_DEBUG") |
|
else() |
|
set(LIBLLDB_LIBRARIES "") |
|
message("liblldb not found. Building juCi++ without debugging support") |
|
endif() |
|
|
|
include(FindPkgConfig) |
|
pkg_check_modules(GTKMM gtkmm-3.0 REQUIRED) |
|
pkg_check_modules(GTKSVMM gtksourceviewmm-3.0 REQUIRED) |
|
|
|
set(global_includes |
|
${Boost_INCLUDE_DIRS} |
|
${GTKMM_INCLUDE_DIRS} |
|
${GTKSVMM_INCLUDE_DIRS} |
|
${LIBCLANG_INCLUDE_DIRS} |
|
${LIBCLANGMM_INCLUDE_DIR} |
|
${ASPELL_INCLUDE_DIR} |
|
${TINY_PROCESS_INCLUDE_DIR} |
|
) |
|
|
|
set(global_libraries |
|
${LIBCLANG_LIBRARIES} |
|
${GTKMM_LIBRARIES} |
|
${GTKSVMM_LIBRARIES} |
|
${Boost_LIBRARIES} |
|
${ASPELL_LIBRARIES} |
|
${LIBLLDB_LIBRARIES} |
|
) |
|
|
|
set(project_files |
|
cmake.cc |
|
cmake.h |
|
config.cc |
|
config.h |
|
dialogs.cc |
|
dialogs.h |
|
directories.cc |
|
directories.h |
|
dispatcher.cc |
|
dispatcher.h |
|
entrybox.cc |
|
entrybox.h |
|
files.h |
|
filesystem.cc |
|
filesystem.h |
|
info.h |
|
info.cc |
|
juci.cc |
|
juci.h |
|
menu.cc |
|
menu.h |
|
notebook.cc |
|
notebook.h |
|
project.cc |
|
project.h |
|
project_build.h |
|
project_build.cc |
|
selectiondialog.cc |
|
selectiondialog.h |
|
source.cc |
|
source.h |
|
source_clang.cc |
|
source_clang.h |
|
terminal.cc |
|
terminal.h |
|
tooltips.cc |
|
tooltips.h |
|
window.cc |
|
window.h |
|
|
|
../libclangmm/src/CodeCompleteResults.cc |
|
../libclangmm/src/CompilationDatabase.cc |
|
../libclangmm/src/CompileCommand.cc |
|
../libclangmm/src/CompileCommands.cc |
|
../libclangmm/src/CompletionString.cc |
|
../libclangmm/src/Cursor.cc |
|
../libclangmm/src/Diagnostic.cc |
|
../libclangmm/src/Index.cc |
|
../libclangmm/src/SourceLocation.cc |
|
../libclangmm/src/SourceRange.cc |
|
../libclangmm/src/Token.cc |
|
../libclangmm/src/Tokens.cc |
|
../libclangmm/src/TranslationUnit.cc |
|
../libclangmm/src/Utility.cc |
|
|
|
../tiny-process-library/process.cpp) |
|
|
|
if(LIBLLDB_FOUND) |
|
list(APPEND project_files debug_clang.h debug_clang.cc) |
|
endif() |
|
|
|
if(MSYS) |
|
list(APPEND project_files dialogs_unix.cc ../tiny-process-library/process_win.cpp) |
|
else() |
|
list(APPEND project_files dialogs_unix.cc ../tiny-process-library/process_unix.cpp) |
|
endif() |
|
|
|
include_directories(${global_includes}) |
|
|
|
if(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") AND (NOT $ENV{distribution} STREQUAL "")) |
|
add_library(${project_name} OBJECT ${project_files}) |
|
else() |
|
add_executable(${project_name} ${project_files}) |
|
target_link_libraries(${project_name} ${global_libraries}) |
|
install(TARGETS ${project_name} |
|
RUNTIME DESTINATION bin |
|
) |
|
endif() |
|
|
|
# add a target to generate API documentation with Doxygen |
|
find_package(Plantuml) |
|
find_package(Doxygen) |
|
if(DOXYGEN_FOUND) |
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY) |
|
add_custom_target(doc |
|
${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile |
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} |
|
COMMENT "Generating API documentation with Doxygen to ${CMAKE_CURRENT_BINARY_DIR}" VERBATIM |
|
) |
|
endif(DOXYGEN_FOUND)
|
|
|