0
次のように私は私のソースコードのディレクトリ構造を持つ午前のために働いていないビルド:cmakeのは、ネストされたソースディレクトリ
.
├── build
├── CMakeLists.txt
├── libs
│ ├── CMakeLists.txt
│ ├── ext
│ │ └── include
│ │ └── json.hpp
│ └── int
│ ├── CMakeLists.txt
│ └── net
│ ├── CMakeFiles
│ │ ├── CMakeDirectoryInformation.cmake
│ │ └── progress.marks
│ ├── cmake_install.cmake
│ ├── CMakeLists.txt
│ ├── include
│ │ ├── connection.hpp
│ │ └── conn_manager.hpp
│ ├── Makefile
│ └── src
│ ├── CMakeFiles
│ │ ├── CMakeDirectoryInformation.cmake
│ │ ├── libs.dir
│ │ │ ├── build.make
│ │ │ ├── cmake_clean.cmake
│ │ │ ├── cmake_clean_target.cmake
│ │ │ ├── DependInfo.cmake
│ │ │ ├── depend.make
│ │ │ ├── flags.make
│ │ │ ├── link.txt
│ │ │ └── progress.make
│ │ └── progress.marks
│ ├── cmake_install.cmake
│ ├── CMakeLists.txt
│ ├── connection.cpp
│ ├── conn_manager.cpp
│ └── Makefile
└── main
├── CMakeLists.txt
├── config
│ └── config.json
└── srcs
├── CMakeLists.txt
├── main.cpp
├── samvaadak.cpp
└── samvaadak.hpp
「構築」は、私はcmakeのを実行していたからフォルダです。ビルド/ dist/bin内で実行可能な最終出力を実行して作成します。しかし、ソースツリー(libsとmain)の中間に多くの中間を作り、それを混乱させます。
最上位CMakeLists.txtファイルは次のようになります。
subdirs(src)
そして、ソースファイルが存在している内側のフォルダ(複数可)のためのCMakeLists.txtファイルは、このようなものです::
project (samvaadak)
subdirs(main libs)
set (CMAKE_CXX_STANDARD 11)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/dist/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/dist/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/dist/bin)
中間CMakeLists.txtファイルは、以下の内容を持っている
LIBSと メインフォルダとちょうど釜の外側で構築cmakeのを伝えるためにどのようにinclude_directories(${samvaadak_SOURCE_DIR}/libs/int/net/include)
include_directories(${samvaadak_SOURCE_DIR}/libs/ext/include)
add_library(nettu conn_manager.cpp connection.cpp)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/dist/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/dist/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/dist/bin)
ビルドの中のすべて?あなたがソースに無効にすることができ
アウトソースビルドCMake ** never **は、スクリプトが明示的にそれを要求しない限り、ソースディレクトリ内のファイルを生成しません。ソースディレクトリでCMakeによって生成されたファイルを削除して、やり直してください。 '中間CMakeLists.txtファイルには次の内容があります: 'subdirs(src)'' - あなたの 'lib'ディレクトリに' src'サブディレクトリがありません。注意:[subdirs](https://cmake.org/cmake/help/v3.7/command/subdirs.html)コマンドは省略されていますので、[add_subdirectory](https://cmake.org/cmake/help/)を使用してください。 v3.7/command/add_subdirectory.html)を参照してください。 – Tsyvarev