0
假设我的项目有几个子模块,并且该架构是:如何通过CMakeLists母亲建立一个项目?
- /CMakeLists.txt(基地) - >呼叫子目录
- /projectName/CMakeLists.txt(儿童) - >通话子目录MODULENAME并添加主要项目来源
- /projectName/xxx.cpp
- /projectName/moduleName/CMakeLists.txt(儿童的儿童) - >添加模块源
- /projectName/moduleName/xxx.cpp
我可以做一个单一CMakeLists加入很多消息来源,但我认为CMake已经以这种方式工作。
我的CMakeLists.txt:
主要的CMakeLists.txt:
# CMake Minimum Version Required (>= 2.8)
cmake_minimum_required (VERSION 2.8)
# CMake Project Name and Languages
project (LightUpdater C CXX)
# Add Compiler Definitions
add_definitions (-Wall -Werror)
# Include source headers
include_directories (lightupdater)
# Add custom module folder
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMakeModules;${CMAKE_MODULE_PATH}")
set (EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}) # Binary output folder
# Setup project variables
set (LIGHTUPDATER_OUTPUT lightupdater)
set (LIGHTUPDATER_SOURCES "")
# Add Source Subdirectory
add_subdirectory (lightupdater)
/projectName/CMakeLists.txt
# Setup the source code files
list (APPEND LIGHTUPDATER_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/lightupdater.cpp)
# Add Modules
add_subdirectory (interface)
/PROJECTNAME/MODULENAME/CMakeLists。 txt
list (APPEND LIGHTUPDATER_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/gui.cpp)
# Qt4
# ----------------------------------------------------------------------------------
# Find Qt4 (REQUIRED)
find_package(Qt4 REQUIRED)
# Compiler setup
include (${QT_USE_FILE})
add_definitions (${QT_DEFINITIONS})
include_directories(${QT_INCLUDE_DIR})
# Setup the interface sources
set(INTERFACE_HEADER ${CMAKE_CURRENT_SOURCE_DIR}/gui.hpp)
# Process headers
QT4_WRAP_CPP(INTERFACE_HEADER_MOC ${INTERFACE_HEADER})
list(APPEND LIGHTUPDATER_SOURCES ${INTERFACE_HEADER_MOC})
# ----------------------------------------------------------------------------------
# Define Qt Operating System
# Created by Renato Utsch
# ----------------------------------------------------------------------------------
set(GUI_TYPE "")
if(APPLE)
set(GUI_TYPE MACOSX_BUNDLE)
elseif(WIN32)
set(GUI_TYPE WIN32)
endif()
# Compiler call
add_executable(${LIGHTUPDATER_OUTPUT} ${GUI_TYPE} ${LIGHTUPDATER_SOURCES})
# Linking the 3rd party librarys
target_link_libraries(${LIGHTUPDATER_OUTPUT} ${QT_LIBRARIES})
我想调用进程发生在编译器CMakeLists.txt的母亲,而不是像现在这样在模块中。
但是,我如何编译根CMakeLists.txt中的代码? –
用显式路径替换'$ {CMAKE_CURRENT_SOURCE_DIR}'的所有用法。 – arrowd
但我需要在模块路径中定义源代码,并将这些变量恢复回根CMakeLists.txt并进行编译。 –