Skip to content

Commit

Permalink
Cmake useing some default PATH variables && NIX shell added variables
Browse files Browse the repository at this point in the history
Variables CPLUS_INCLUDE_PATH and LD_LIBRARY_PATH included in nixshell
and CMAKE updated to respect that (and include in other libraries)
  • Loading branch information
bresilla committed Nov 19, 2019
1 parent 80aa9b8 commit f72b8ce
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 36 deletions.
79 changes: 51 additions & 28 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -77,19 +77,22 @@ include(Warnings)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \
-Wall -Wno-unknown-pragmas \
-Wno-sign-compare \
-Woverloaded-virtual \
-Wwrite-strings \
-Wno-unused")

if((cmake_build_type_tolower STREQUAL "release") OR (cmake_build_type_tolower STREQUAL "fastrelease"))
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-unknown-pragmas -Wno-sign-compare -Woverloaded-virtual -Wwrite-strings -Wno-unused")
set(CMAKE_CXX_FLAGS_RELEASE "-O3")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
include(LTO)
include(Packaging)
if(cmake_build_type_tolower STREQUAL "release")
option(ENABLE_DOCUMENT "Enable documentation" ON)
endif()
elseif((cmake_build_type_tolower STREQUAL "debug") OR (cmake_build_type_tolower STREQUAL "fastdebug"))
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-unknown-pragmas -Wno-sign-compare -Woverloaded-virtual -Wwrite-strings -Wno-unused")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage -fprofile-arcs -ftest-coverage")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage -fprofile-arcs -ftest-coverage -O0 -g3")
option(BUILD_TESTS "Build test units" ON)
option(ENABLE_COVERAGE "Enable testing coverage" ON)
if(cmake_build_type_tolower STREQUAL "debug")
Expand All @@ -103,27 +106,36 @@ message ("BUILD TYPE: ${CMAKE_BUILD_TYPE}\n")


# -------------------------------------------------------------------------------------------------------------------------------------------
# EXTERNAL LIB
# SYSTEM LIB
# -------------------------------------------------------------------------------------------------------------------------------------------
#Use fmtlib for formatting
add_subdirectory(${EXT_SRC}/fmt EXCLUDE_FROM_ALL)
target_set_warnings(fmt DISABLE ALL) # Treat fmtlib as a system include as to ignore the warnings
set_target_properties(fmt PROPERTIES FOLDER "external")
set_target_properties(fmt PROPERTIES COMPILE_OPTIONS "-O2")

set(EXTLIB fmt)
foreach(EXT ${EXTLIB})
message("external library ${EXT} added")
#environment CPLUS_INCLUDE_PATH and default headers /usr/include
if (NOT $ENV{CPLUS_INCLUDE_PATH} STREQUAL "")
string (REPLACE ":" " " SYS_INCLUDES $ENV{CPLUS_INCLUDE_PATH})
string (REPLACE "//" "/" SYS_INCLUDES ${SYS_INCLUDES})
string(REGEX MATCHALL "[^ ]+" DEFINC ${SYS_INCLUDES})
endif (NOT $ENV{CPLUS_INCLUDE_PATH} STREQUAL "")
list(APPEND DEFINC "/usr/include")
list(REMOVE_DUPLICATES DEFINC)
foreach(LOC ${DEFINC})
message("directory ${LOC} included")
endforeach()
include_directories(SYSTEM ${DEFINC})

#environment LD_LIBRARY_PATH and default linker /usr/lib/
if (NOT $ENV{LD_LIBRARY_PATH} STREQUAL "")
string (REPLACE ";" " " SYS_LIBRARIES $ENV{LD_LIBRARY_PATH})
string (REPLACE "//" "/" SYS_LIBRARIES ${SYS_LIBRARIES})
string(REGEX MATCHALL "[^ ]+" DEFLIB ${SYS_LIBRARIES})
endif (NOT $ENV{LD_LIBRARY_PATH} STREQUAL "")
list(APPEND DEFLIB "/usr/lib")
list(REMOVE_DUPLICATES DEFLIB)
foreach(LOC ${DEFLIB})
message("directory ${LOC} linked")
endforeach()
link_directories(${DEFLIB})



# -------------------------------------------------------------------------------------------------------------------------------------------
# SYSTEM LIB
# -------------------------------------------------------------------------------------------------------------------------------------------
# LET LD SEARCH HERE (avoid, better use find_library())
# link_directories(/usr/lib)

# FIND-PACKAGES
find_package(Curses REQUIRED)
if(NOT CURSES_FOUND)
message ("CURSES_NOT_FOUND")
Expand All @@ -137,6 +149,21 @@ endforeach()



# -------------------------------------------------------------------------------------------------------------------------------------------
# EXTERNAL LIB
# -------------------------------------------------------------------------------------------------------------------------------------------
#Use fmtlib for formatting
add_subdirectory(${EXT_SRC}/fmt EXCLUDE_FROM_ALL)
target_set_warnings(fmt DISABLE ALL) # Treat fmtlib as a system include as to ignore the warnings
set_target_properties(fmt PROPERTIES FOLDER "external")
set_target_properties(fmt PROPERTIES COMPILE_OPTIONS "-O2")

set(EXTLIB fmt)
foreach(EXT ${EXTLIB})
message("external library ${EXT} added")
endforeach()



# -------------------------------------------------------------------------------------------------------------------------------------------
# LOCAL LIB
Expand All @@ -152,7 +179,6 @@ function (add_source_lib NAME)
target_include_directories(${NAME} PRIVATE ${UTL_SRC} SYSTEM INTERFACE ${UTL_SRC})
target_link_libraries(${NAME}
PRIVATE
${UTILS}
${EXTLIB}
${SYSLIB}
)
Expand All @@ -165,6 +191,7 @@ function (add_source_lib NAME)
endfunction(add_source_lib)

set(LIBRARIES cplate second)

foreach(LIB ${LIBRARIES})
add_source_lib(${LIB})
message("local library ${LIB} added")
Expand All @@ -177,18 +204,14 @@ endforeach()
if(BUILD_MAIN)
add_executable(${PROJECT_NAME}_bin ${SRC_SRC}/main.cpp)
set_target_properties(${PROJECT_NAME}_bin PROPERTIES OUTPUT_NAME ${PROJECT_NAME})

target_include_directories(${PROJECT_NAME}_bin PRIVATE ${UTL_SRC} INTERFACE ${UTL_SRC})
target_link_libraries(${PROJECT_NAME}_bin
PUBLIC
${LIBRARIES}
PRIVATE
${EXTLIB}
${SYSLIB}
INTERFACE
${UTILS}
)
target_include_directories(${PROJECT_NAME}_bin PRIVATE ${UTL_SRC} INTERFACE ${UTL_SRC})

if(ENABLE_SANITIZERS)
# add_custom_command(TARGET ${PROJECT_NAME}_bin POST_BUILD COMMAND clang-tidy ${SRC_SRC}/main.cpp)
add_custom_command(TARGET ${PROJECT_NAME}_bin POST_BUILD COMMAND cppcheck --enable=all ${SRC_SRC}/main.cpp)
Expand Down
16 changes: 8 additions & 8 deletions shell.nix
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,24 @@ with import <nixpkgs> {}; rec {
cplateEnv = stdenv.mkDerivation {
name = "cmake";
buildInputs = [ stdenv
ccache
cmake
pkgconfig
gcc
gdb
clang
clang-tools
llvm
llvmPackages.libclang
clang
gdb
lldb
cmake
ctags
cquery
ccache
cppcheck
clang-tools
valgrind
kcov
xorg.libX11
ncurses
];
LD_LIBRARY_PATH="/run/opengl-driver/lib;${xorg.libX11}/lib/;${libGL}/lib/;${libGLU}/lib;${freeglut}/lib";
CXX="clang++";
LD_LIBRARY_PATH="${xorg.libX11}/lib/";
CPLUS_INCLUDE_PATH="/nix/store/bhngps8y3sf2hdfkbi16bk2ya3k67rkq-gcc-8.3.0/include/c++/8.3.0";
};
}

0 comments on commit f72b8ce

Please sign in to comment.