Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p><strong>EDIT:</strong></p> <p>Use file and GLOB_RECURSE:</p> <blockquote> <p>GLOB_RECURSE will generate a list similar to the regular GLOB, except it will traverse all the subdirectories of the matched directory and match the files.</p> </blockquote> <p>I advice you to rearrenge your files like this:</p> <pre><code>app/ |_ src/ |_ include/ |_ CMakeLists.txt so1/ |_ src/ |_ include/ |_ CMakeLists.txt so2/ |_ src/ |_ include/ |_ CMakeLists.txt so3/ |_ src/ |_ include/ |_ CMakeLists.txt CMakeLists.txt </code></pre> <p>The CMakeLists.txt in app folder:</p> <pre><code>SET (APP_NAME app) # Print variables to stdout MESSAGE ( STATUS ) MESSAGE ( STATUS "Configuring ${APP_NAME}:" ) MESSAGE ( STATUS ) # Source code files FILE (GLOB_RECURSE SOURCE_FILES src/*.cpp include/*.h include/*.inl) # Compiler options IF (CMAKE_COMPILER_IS_GNUCXX) ADD_DEFINITIONS (-ansi -Wall -Wextra -Werror -pthread) ENDIF () # Build application ADD_EXECUTABLE (${APP_NAME} ${SOURCE_FILES}) TARGET_LINK_LIBRARIES (${APP_NAME} ${SO1_LIB} ${SO2_LIB} ${SO3_LIB} ) INSTALL (TARGETS ${APP_NAME} RUNTIME DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) </code></pre> <p>The CMakeLists.txt in each lib folder would be something like this(change the LIB_OUTPUT_NAME in each file accordingly):</p> <pre><code>SET (LIB_OUTPUT_NAME so1) # Print variables to stdout MESSAGE ( STATUS ) MESSAGE ( STATUS "Configuring ${LIB_OUTPUT_NAME}:" ) MESSAGE ( STATUS ) # Source code, headers and test files FILE (GLOB_RECURSE HEADER_FILES include/*.h include/*.inl) FILE (GLOB_RECURSE SOURCE_FILES src/*.cpp include/*.h include/*.inl) FILE (GLOB_RECURSE TEST_SRC_FILES tests/*.cpp tests/*.h tests/*.inl) # Compiler options IF (CMAKE_COMPILER_IS_GNUCXX) ADD_DEFINITIONS (-ansi -Wall -Wextra -Werror -pthread) ENDIF () # Build library ADD_LIBRARY (${LIB_OUTPUT_NAME} SHARED ${SOURCE_FILES}) </code></pre> <p>Then in the main CMakeLists.txt:</p> <pre><code>CMAKE_MINIMUM_REQUIRED (VERSION 2.6) PROJECT (App CXX) # Set common variables IF ("${CMAKE_BUILD_TYPE}" STREQUAL "Release") SET (BUILD_DIR build/release) ELSE () SET (BUILD_DIR build/debug) ENDIF () # Print variables to stdout MESSAGE ( STATUS ) MESSAGE ( STATUS "Building App:" ) MESSAGE ( STATUS "change a configuration variable with: cmake -D&lt;Variable&gt;=&lt;Value&gt;" ) MESSAGE ( STATUS "CMAKE_INSTALL_PREFIX = ${CMAKE_INSTALL_PREFIX}" ) MESSAGE ( STATUS "CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}" ) MESSAGE ( STATUS "CMAKE_PREFIX_PATH = ${CMAKE_PREFIX_PATH}" ) MESSAGE ( STATUS ) # Remove build directory on clean target SET_DIRECTORY_PROPERTIES (PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES ${BUILD_DIR}) # Include directories INCLUDE_DIRECTORIES ( "app/include" "so1/include" "so2/include" "so3/include" ) # Add common compiler flags IF (CMAKE_COMPILER_IS_GNUCXX) SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CPP_FLAGS_RELEASE} -O2") SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g) ENDIF () # Build all dynamic Libraries ADD_SUBDIRECTORY (smartmatic ${BUILD_DIR}/so1) SET (SO1_LIB ${CMAKE_CURRENT_SOURCE_DIR}/${BUILD_DIR}/so1/so1.so) ADD_SUBDIRECTORY (saes-runtime ${BUILD_DIR}/so2) SET (SO2_LIB ${CMAKE_CURRENT_SOURCE_DIR}/${BUILD_DIR}/so2/so2.so) ADD_SUBDIRECTORY (saes-devices ${BUILD_DIR}/so3) SET (SO3_LIB ${CMAKE_CURRENT_SOURCE_DIR}/${BUILD_DIR}/so3/so3.so) # Add dynamic lib to app build for linking. ADD_SUBDIRECTORY (so1 ${BUILD_DIR}/so1) SET (SO1_LIB ${CMAKE_CURRENT_SOURCE_DIR}/${BUILD_DIR}/so1/so1.so) ADD_SUBDIRECTORY (so2 ${BUILD_DIR}/so2) SET (SO2_LIB ${CMAKE_CURRENT_SOURCE_DIR}/${BUILD_DIR}/so2/so2.so) ADD_SUBDIRECTORY (so3 ${BUILD_DIR}/so3) SET (SO3_LIB ${CMAKE_CURRENT_SOURCE_DIR}/${BUILD_DIR}/so3/so3.so) # Build Application ADD_SUBDIRECTORY (app ${CMAKE_CURRENT_SOURCE_DIR}/${BUILD_DIR}/app) </code></pre> <p>More information on:</p> <p><a href="http://www.cmake.org/cmake/help/cmake2.6docs.html" rel="nofollow">http://www.cmake.org/cmake/help/cmake2.6docs.html</a></p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload