2016-03-17 4 views
0

Мой вопрос связан с установкой PCL и здесь он идет:установка внешней папки библиотеки/бен в CMake в окнах

Я скомпилированный PCL с помощью MSVC2013 и я вручную обновить мой PCLConfig.cmake, чтобы указать на всех его зависимостей (3rdParty ЛИЭС). Проблема в том, что я хочу также установить свои папки binaries/bin в один и тот же файл cmake (вместо добавления/bin в переменные среды). Есть ли способ сделать это ?

Что делает этот вопрос уместным, так это то, что я тестирую различные версии PCL (1.6, 1.7, 1.8 ...), поэтому не будет добавлять папки/bin на пути всех этих версий, создаст какой-то заключить между ними впоследствии (на этапе отступания)?

* Чтобы быть ясным, что мне удалось сделать, так это то, что, используя cmake, я могу выбрать PCLConfig версии PCL, которую хочу, но при запуске моей программы (с успехом скомпилированной) она выдает отсутствующий pcl _ *** * .dll отсутствует, что является логическим, потому что папка PCL/bin не добавлена ​​в систему environement. поэтому, мой вопрос: «Могу ли я добавить floo PCL/bin в среду проекта, используя CMakeLists моего проекта? (вместо добавления его в системную среду)»

Заранее спасибо.

+0

'Проблема в том, что я хочу также установить его файлы binaries/bin в том же файле cmake'. Не могли бы вы подробнее рассказать о своей проблеме? Вы хотите экспортировать переменную 'PATH' с каталогом' /bin', включенным в скрипт 'PCLConfig.cmake'? Если это так, просто добавьте 'set (ENV {PATH}" $ ENV {PATH}; /bin ")' в 'PCLConfig.cmake'. Таким образом, новые команды CMake, такие как 'find_program()', будут также искать ваш каталог '/ bin'. – Tsyvarev

+0

Я отредактировал мой вопрос. Короче говоря, есть ли способ установить/изменить переменную системной среды с помощью cmake? – Vtik

+0

Сценарий может устанавливать переменные среды только для этапа конфигурации. Для того чтобы сделать приведенный исполняемый файл работать, нужно правильно настроить RPATH. Существует хорошее описание [RPATH обработки в CMAke] (https://cmake.org/Wiki/CMake_RPATH_handling). – Tsyvarev

ответ

0

Временный фикс я нашел генерирует мой проект с указанной версией PCL хотел, а затем Добавление бен папки вручную в MSVC 2013:

Debugging-> Окружающая среда < < PATH = path_to_lib \ Lib;% PATH%

Цыварев, я ищу ваше предложение, и я дам вам знать, если это сработает. Похож на более чистый способ ... Cheers,

0

Эта информация PATH для отладки хранится в файле проекта «пользователь». Я написал функцию CMake для создания такого файла автоматически. Это работало для VC10. Я предполагаю, что он все равно будет работать, или может потребоваться некоторое изменение. Принцип заключается в том, чтобы сохранить пустой файл проекта пользователя в качестве шаблона, а CONFIGURE_FILE - содержимое, чтобы установить все, что вы хотите. Я установил мой, чтобы вы сначала сделали: SET(USERFILE_ENVIRONMENT "PATH=${directory}"), затем вызовите макрос CREATE_USER_FILE с именем проекта CMake.

CreateUserFile.cmake:

get_filename_component(MY_DIRECTORY ${CMAKE_CURRENT_LIST_FILE} PATH) 
SET(USERFILE_TEMPLATE ${MY_DIRECTORY}/msdev.vcxprojuser.template CACHE STRING "" FORCE) 

MACRO(CREATE_USER_FILE _projectName) 

# Find user and system name 
SET(SYSTEM_NAME $ENV{USERDOMAIN} CACHE STRING SystemName) 
SET(USER_NAME $ENV{USERNAME} CACHE STRING UserName) 

IF (${CMAKE_SIZEOF_VOID_P} MATCHES 4) 
    SET(USERFILE_ARCH Win32) 
ELSE() 
    SET(USERFILE_ARCH x64) 
ENDIF() 

SET(USER_FILE ${_projectName}.vcxproj.user) 
SET(USERFILE_TEMPLATE ${USERFILE_TEMPLATE}) 

SET(OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/${USER_FILE}) 
# Configure the template file 
CONFIGURE_FILE(${USERFILE_TEMPLATE} ${USER_FILE} @ONLY) 

ENDMACRO(CREATE_USER_FILE) 

А вот файл шаблона.

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|@[email protected]'"> 
    <LocalDebuggerEnvironment>@[email protected]</LocalDebuggerEnvironment> 
    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor> 
    </PropertyGroup> 
    <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@[email protected]'"> 
    <LocalDebuggerEnvironment>@[email protected]</LocalDebuggerEnvironment> 
    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor> 
    </PropertyGroup> 
    <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MinSizeRel|@[email protected]'"> 
    <LocalDebuggerEnvironment>@[email protected]</LocalDebuggerEnvironment> 
    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor> 
    </PropertyGroup> 
    <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|@[email protected]'"> 
    <LocalDebuggerEnvironment>@[email protected]</LocalDebuggerEnvironment> 
    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor> 
    </PropertyGroup> 
</Project> 

ProTip: сделать что-то подобное, чтобы создать .bat файл для запуска программы после установки PATH, что CMake вычисляющий, так что вы можете запустить его из вне Visual Studio.

Смежные вопросы