Как установить CMAKE_INTDIR или CMAKE_CFG_INTDIR для удаления конфигурации проекта?

Сейчас я использую CMake для создания проекта VC 10. Одна проблема, которую я обнаружил, заключается в том, что путь к выходной библиотеке или исполняемой программе связан с конфигурацией проекта (отладка или выпуск). Чтобы проиллюстрировать это, приведу следующие примеры:

  cmake_minimum_required( VERSION 2.6 )
project (test)
add_definitions (-DEXP_STL )
add_library(lib1 SHARED lib1.cxx)
set_target_properties(lib1 PROPERTIES LINK_INTERFACE_LIBRARIES "")
set(LIBRARY_OUTPUT_PATH ${test_SOURCE_DIR})

Последняя команда в сценарии обозначает, что я хотел бы поместить выходную библиотеку (lib1) в каталоге ${test_SOURCE_DIR}, Тем не менее, выходная библиотека находится в ${test_SOURCE_DIR}/Debug вместо. Мне было интересно, как я могу убедиться, что выходная библиотека точно в пути, который я указал. Спасибо!

BWTПричина, по которой я поднимаю этот вопрос, заключается в том, что в среде разработки Linux путь к выходной библиотеке или программе выполнения — это именно тот путь, который вы задали set(LIBRARY_OUTPUT_PATH ...) функция. Я хочу иметь последовательный результат.

0

Решение

Этот вопрос считается дублированным, и одно из возможных решений заключается в следующем:

if (WIN32)
set(myoutputdirectory ${your_source_file_SOURCE_DIR}/output/win/32)
elseif (CMAKE_COMPILER_IS_GNUCC)
set(myoutputdirectory ${your_source_file_SOURCE_DIR}/output/linux/32)
elseif(APPLE)
set(myoutputdirectory ${your_source_file_SOURCE_DIR}/output/mac/32)
endif (WIN32)
# set output parth
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${myoutputdirectory} )
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${myoutputdirectory} )
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${myoutputdirectory} )
# for multi-config builds (e.g. msvc)
foreach( OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES} )
string( TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG )
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${myoutputdirectory} )
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${myoutputdirectory} )
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${myoutputdirectory} )
endforeach( OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES )
2

Другие решения

Других решений пока нет …