Как настроить CMake, чтобы решение VS использовало определенную командную строку сборки? - PullRequest
0 голосов
/ 23 октября 2011

Я пытаюсь настроить CMake для создания решения MSVC (2010) для нашего проекта, и мне нужно настроить проекты так, чтобы они использовали нашу конкретную систему сборки, а не компилировали с использованием командной строки по умолчанию.

Вот как выглядит файл проекта для VS2008 (который мы генерируем с помощью другого сценария, от которого я бы хотел избавиться):

        <Tool
            Name="VCNMakeTool"
            BuildCommandLine="../bam.bat -j %%NUMBER_OF_PROCESSORS%%"
            ReBuildCommandLine="../bam.bat -j %%NUMBER_OF_PROCESSORS%% -c  &amp;&amp; ../bam.bat -j %%NUMBER_OF_PROCESSORS%%"
            CleanCommandLine="../bam.bat -j %%NUMBER_OF_PROCESSORS%% -c "
            Output="..\..\..\common\win32\container.exe"
            PreprocessorDefinitions=""
            IncludeSearchPath=""
            ForcedIncludes=""
            AssemblySearchPath=""
            ForcedUsingAssemblies=""
            CompileAsManaged=""
        />

Это в основном три CommandLine настройки, которые я хотел бы указать в моей конфигурации cmake.

Я нашел команду build_command в документации, но из описания она звучит так, как будто она сортируетпротивоположность того, что я хочу, т.е. записать командную строку, которую он сгенерирует в переменную, а не взять строку и установить для нее командную строку.

Кое-что, что кажется немного связанным, это кросс-компиляцияфункция в CMake, но я уверен, что это хороший способ сделать это.

По сути, я просто хочу, чтобы VS запускал пакетный файл при сборке, а затем анализировал результаты, чтобы получить хорошие сообщения об ошибках и т. Д.

Ответы [ 2 ]

1 голос
/ 24 октября 2011

Мне кажется, что на языке CMake вам просто нужна "пользовательская команда".

Что-то вроде:

set(custom_exe "${CMAKE_CURRENT_BINARY_DIR}/common/win32/container.exe")

add_custom_command(OUTPUT ${custom_exe}
  COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bam.bat -j $ENV{NUMBER_OF_PROCESSORS}
  DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bam.bat
)

add_custom_target(bam ALL DEPENDS ${custom_exe})
1 голос
/ 23 октября 2011

Может быть, вам нужно написать свой собственный CMake Toolchain. Вы можете увидеть примеры наборов инструментов в CMAKE_ROOT / share / Modules / Platform или в документации CMake , но я не уверен, может ли cmake генерировать MSVC-решение для собственного компилятора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...