У вас есть несколько вариантов.
Чтобы изменить расположение исполняемых файлов по умолчанию, установите 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})