[CMake] Расположение бинарников и билиотек
От: Vzhyk  
Дата: 26.01.10 14:16
Оценка:
Подскажите, что нужно прописать в CMakeList, чтобы в получаемых vcproj
было следующее:
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
Posted via RSDN NNTP Server 2.1 beta
Re: [CMake] Расположение бинарников и билиотек
От: Ytz https://github.com/mtrempoltsev
Дата: 26.01.10 20:07
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>Подскажите, что нужно прописать в CMakeList, чтобы в получаемых vcproj

V>было следующее:
V>OutputDirectory="$(SolutionDir)$(ConfigurationName)"
V>IntermediateDirectory="$(ConfigurationName)"

Нужно установить переменную EXECUTABLE_OUTPUT_PATH
set (EXECUTABLE_OUTPUT_PATH SolutionDir)
cmake output directory
Re[2]: [CMake] Расположение бинарников и билиотек
От: Vzhyk  
Дата: 27.01.10 14:58
Оценка:
Здравствуйте, Ytz, Вы писали:

Ytz>Здравствуйте, Vzhyk, Вы писали:


V>>Подскажите, что нужно прописать в CMakeList, чтобы в получаемых vcproj

V>>было следующее:
V>>OutputDirectory="$(SolutionDir)$(ConfigurationName)"
V>>IntermediateDirectory="$(ConfigurationName)"

Ytz>Нужно установить переменную EXECUTABLE_OUTPUT_PATH

Ytz>
Ytz>set (EXECUTABLE_OUTPUT_PATH SolutionDir)
Ytz>

Не. Не работает. Вот код:
cmake_minimum_required(VERSION 2.6)
set(NAME xxx)
project(${NAME})

set (EXECUTABLE_OUTPUT_PATH SolutionDir)

set(${NAME}_SRCS 
    xxx.h
    xxx.cpp
    )

add_library(${NAME} SHARED ${xxx_SRCS})

Вот команда: cmake -G "Visual Studio 8 2005"

Вот результат:
    <Platforms>
        <Platform
            Name="Win32"/>
    </Platforms>
    <Configurations>
        <Configuration
            Name="Debug|Win32"
            OutputDirectory="Debug"
            IntermediateDirectory="xxx.dir\Debug"


Попытка так же устанавливать
set (CMAKE_RUNTIME_OUTPUT_DIRECTORY SolutionDir)
или
set (RUNTIME_OUTPUT_DIRECTORY SolutionDir)
дает тот де результат.

P.S. Bерсия CMake 2.8
Re[3]: [CMake] Расположение бинарников и билиотек
От: Ytz https://github.com/mtrempoltsev
Дата: 27.01.10 17:29
Оценка: :)
Здравствуйте, Vzhyk, Вы писали:

V>Не. Не работает. Вот код:

V>
V>set (EXECUTABLE_OUTPUT_PATH SolutionDir)
V>

V>Вот команда: cmake -G "Visual Studio 8 2005"

V>Вот результат:

V>
V>            IntermediateDirectory="xxx.dir\Debug"
V>


На самом деле работает При сборке вместо xxx.dir будет подставлен SolutionDir и там же будет директория Debug с продуктами компиляции. Смело жмите F7 в Студии
Re[4]: [CMake] Расположение бинарников и билиотек
От: Vzhyk  
Дата: 28.01.10 09:49
Оценка:
Здравствуйте, Ytz, Вы писали:

Ytz>Здравствуйте, Vzhyk, Вы писали:


V>>Не. Не работает. Вот код:

V>>
V>>set (EXECUTABLE_OUTPUT_PATH SolutionDir)
V>>

V>>Вот команда: cmake -G "Visual Studio 8 2005"

V>>Вот результат:

V>>
V>>            IntermediateDirectory="xxx.dir\Debug"
V>>


Ytz>На самом деле работает При сборке вместо xxx.dir будет подставлен SolutionDir и там же будет директория Debug с продуктами компиляции. Смело жмите F7 в Студии

Нет. Ничего подобного. Студия собирает именно туда, куда указано в OutputDirectory.

Смотрим. Есть проект xxx
CMakeList.txt
cmake_minimum_required(VERSION 2.6)
set(NAME xxx)
project(${NAME})
set (RUNTIME_OUTPUT_DIRECTORY SolutionDir)
set(${NAME}_SRCS 
    xxx.h
    xxx.cpp
    )

add_library(${NAME} SHARED ${xxx_SRCS})
target_link_libraries(${NAME} yyy)
add_subdirectory(yyy)


Есть вложенная папка yyy
CMakeList.txt
cmake_minimum_required(VERSION 2.6)
set(NAME yyy)
project(${NAME})
set (RUNTIME_OUTPUT_DIRECTORY SolutionDir)
set(${NAME}_SRCS 
    yyy.h
    yyy.cpp
    )
add_library(${NAME} SHARED ${yyy_SRCS})



Так вот xxx собирается Debug (как и указано в OutputDirectory="Debug" в соответсвующем vcproj)
А yyy собирается yyy/Debug (как и указано в OutputDirectory="Debug" в соответсвующем vcproj)

Причем CMake зачем-то создает еще один solution в директории yyy.
Напомню, директория yyy вложена с xxx.

В то же время VS 2005 с дефолтными установками OutputDirectory="$(SolutionDir)$(ConfigurationName)", имхо наиболее удобна под Windows. И хотелось бы уговорить CMake именно это и вписать в OutputDirectory.

Фактически есть две проблемы:
1.
CMake 2.8 под Windows у меня не реагирует ни на одну из
set (EXECUTABLE_OUTPUT_PATH SolutionDir)
set (CMAKE_RUNTIME_OUTPUT_DIRECTORY SolutionDir)
set (RUNTIME_OUTPUT_DIRECTORY SolutionDir)
2.
Как в Cmake задать именно вот это: "$(SolutionDir)$(ConfigurationName)"

P.S. cmake version 2.8.0-rc2
Re[5]: [CMake] Расположение бинарников и билиотек
От: Vzhyk  
Дата: 28.01.10 10:53
Оценка:
> set (CMAKE_RUNTIME_OUTPUT_DIRECTORY SolutionDir)
Не, ошибся — это работает, но нелогично:
Оно в vcproj делает следующее:
OutputDirectory="Debug"
IntermediateDirectory="yyy.dir\Debug"
OutputFile="X:\yyy\SolutionDir\Debug\yyy.dll"

ИМХО — это нелогично, логично просто написать
OutputDirectory="SolutionDir"

А еще лучше:
set (CMAKE_RUNTIME_OUTPUT_DIRECTORY "$(SolutionDir)$(ConfigurationName)")
=>
OutputDirectory="$(SolutionDir)$(ConfigurationName)"

Или может есть какой другой путь установки OutputDirectory?
Posted via RSDN NNTP Server 2.1 beta
Re[6]: [CMake] Расположение бинарников и билиотек
От: Vzhyk  
Дата: 28.01.10 11:26
Оценка:
Vzhyk пишет:
>
Похоже, что это единственный путь:
set (CMAKE_RUNTIME_OUTPUT_DIRECTORY
${CMAKE_SOURCE_DIR}/bin/${CMAKE_PLATFORM})

Но он ну очень горбат. Вот результаты этого:
OutputDirectory="Debug"
IntermediateDirectory="xxx.dir\Debug"
OutputFile="X:\bin\Debug\xxx.dll"

Хотя логичнее было бы установить просто OutputDirectory, а все
остальное, студия бы сделала сама.
Posted via RSDN NNTP Server 2.1 beta
Re[7]: [CMake] Расположение бинарников и билиотек
От: blackhearted Украина  
Дата: 01.02.10 15:39
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>Vzhyk пишет:

>>
V>Похоже, что это единственный путь:
V>set (CMAKE_RUNTIME_OUTPUT_DIRECTORY
V>${CMAKE_SOURCE_DIR}/bin/${CMAKE_PLATFORM})

V>Но он ну очень горбат. Вот результаты этого:

V>OutputDirectory="Debug"
V>IntermediateDirectory="xxx.dir\Debug"
V>OutputFile="X:\bin\Debug\xxx.dll"

V>Хотя логичнее было бы установить просто OutputDirectory, а все

V>остальное, студия бы сделала сама.

А не студия?
CMake вроде именно для такого и делался — под несколько сред генерить проекты.
Re[8]: [CMake] Расположение бинарников и билиотек
От: Vzhyk  
Дата: 01.02.10 16:19
Оценка:
01.02.2010 17:39, blackhearted пишет:
>
> V>Хотя логичнее было бы установить просто OutputDirectory, а все
> V>остальное, студия бы сделала сама.
>
> А не студия?
Это уже холивар будет. Но, имхо, как С++ IDE, VS+VA на текущий момент
самое удобное.

> CMake вроде именно для такого и делался — под несколько сред генерить

> проекты.
Ну если столько различных IDE поддержали (целую толпу VS, можно же было
ограничиться nmake):
The following generators are available on this platform:
Borland Makefiles = Generates Borland makefiles.
MSYS Makefiles = Generates MSYS makefiles.
MinGW Makefiles = Generates a make file for use with
mingw32-make.
NMake Makefiles = Generates NMake makefiles.
Unix Makefiles = Generates standard UNIX makefiles.
Visual Studio 10 = Generates Visual Studio 10 project files.
Visual Studio 6 = Generates Visual Studio 6 project files.
Visual Studio 7 = Generates Visual Studio .NET 2002 project
files.
Visual Studio 7 .NET 2003 = Generates Visual Studio .NET 2003 project
files.
Visual Studio 8 2005 = Generates Visual Studio .NET 2005 project
files.
Visual Studio 8 2005 Win64 = Generates Visual Studio .NET 2005 Win64
project files.
Visual Studio 9 2008 = Generates Visual Studio 9 2008 project
files.
Visual Studio 9 2008 Win64 = Generates Visual Studio 9 2008 Win64
project
files.
Watcom WMake = Generates Watcom WMake makefiles.
CodeBlocks — MinGW Makefiles= Generates CodeBlocks project files.
CodeBlocks — NMake Makefiles= Generates CodeBlocks project files.
CodeBlocks — Unix Makefiles = Generates CodeBlocks project files.
Eclipse CDT4 — MinGW Makefiles
= Generates Eclipse CDT 4.0 project files.
Eclipse CDT4 — NMake Makefiles
= Generates Eclipse CDT 4.0 project files.
Eclipse CDT4 — Unix Makefiles
= Generates Eclipse CDT 4.0 project files.

То почему бы уж не сделать генерацию vcproj в стиле студии.
Posted via RSDN NNTP Server 2.1 beta
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.