Ответ 1
У вас есть несколько вариантов.
Чтобы изменить местоположение исполняемых файлов по умолчанию, установите CMAKE_RUNTIME_OUTPUT_DIRECTORY
в нужное место. Например, если вы добавили
set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
в команду Project/CMakeLists.txt
до add_subdirectory
, ваш исполняемый файл окажется в Project/build
для сборников Unix или build/<config type>
для сборки Win32. Для получения дополнительной информации запустите:
cmake --help-property RUNTIME_OUTPUT_DIRECTORY
Другой вариант для проекта такого размера - иметь только один CMakeLists.txt. Вы могли бы более или менее заменить add_subdirectory(src)
на содержимое Project/src/CMakeLists.txt
для достижения тех же выходных путей.
Однако есть еще несколько проблем.
Вы, вероятно, хотите избежать использования link_directories
в целом. Для объяснения выполните
cmake --help-command link_directories
Даже если вы используете link_directories
, вряд ли какие-либо библиотеки будут найдены в ${SBSProject_BINARY_DIR}/src
Другая проблема заключается в том, что CMAKE_CXX_FLAGS
применяется к сборкам Unix, поэтому, вероятно, он должен быть обернут в блок if (UNIX) ... endif()
. Конечно, если вы не планируете строить что-либо кроме Unix, это не проблема.
Наконец, я бы рекомендовал использовать CMake 2.8 как минимум, если вы не должны использовать 2.6 - CMake - это активно разработанный проект, и текущая версия имеет много существенных улучшений по сравнению с 2.6
Таким образом, одна замена для Project/CMakeLists.txt
может выглядеть так:
cmake_minimum_required (VERSION 2.8)
project (SBSProject)
if (UNIX)
set (CMAKE_CXX_FLAGS "-g3 -Wall -O0")
endif ()
include_directories (${SBSProject_SOURCE_DIR}/src)
set (SBSProject_SOURCES
${SBSProject_SOURCE_DIR}/src/main.cpp
)
add_executable (TIOBlobs ${SBSProject_SOURCES})