|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(__MSVCsetUserCommand_cmake_INCLUDED__) |
|
return() |
|
else() |
|
set(__MSVCsetUserCommand_cmake_INCLUDED__ ON) |
|
endif() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function(MSVCsetUserCommand targetName) |
|
cmake_parse_arguments(MSVCsuc "VERBOSE" "PATH;FILE;COMMAND;ARGS;WORKING_DIR" "" ${ARGN} ) |
|
|
|
|
|
set(MSVCsuc_DEFAULT OFF) |
|
|
|
if(MSVCsuc_PATH AND MSVCsuc_DEFAULT) |
|
set(MSVCsuc_DEFAULT OFF) |
|
endif() |
|
|
|
if(MSVCsuc_FILE AND MSVCsuc_DEFAULT) |
|
set(MSVCsuc_DEFAULT OFF) |
|
endif() |
|
|
|
if(NOT MSVCsuc_COMMAND) |
|
if(MSVCsuc_PATH AND MSVCsuc_FILE) |
|
set(MSVCsuc_COMMAND "${MSVCsuc_PATH}\\${MSVCsuc_FILE}") |
|
elseif(MSVCsuc_PATH) |
|
set(MSVCsuc_COMMAND "${MSVCsuc_PATH}\\$(TargetFileName)") |
|
else() |
|
set(MSVCsuc_COMMAND "$(TargetPath)") |
|
endif() |
|
elseif(MSVCsuc_DEFAULT) |
|
set(MSVCsuc_DEFAULT OFF) |
|
endif() |
|
|
|
|
|
|
|
if(MSVCsuc_WORKING_DIR) |
|
file(TO_NATIVE_PATH ${MSVCsuc_WORKING_DIR} MSVCsuc_WORKING_DIR) |
|
elseif(MSVCsuc_DEFAULT) |
|
set(MSVCsuc_DEFAULT OFF) |
|
else() |
|
set(MSVCsuc_WORKING_DIR "$(ProjectDir)") |
|
endif() |
|
|
|
if(NOT MSVCsuc_ARGS) |
|
set(MSVCsuc_ARGS "") |
|
elseif(MSVCsuc_DEFAULT) |
|
set(MSVCsuc_DEFAULT OFF) |
|
endif() |
|
|
|
if(MSVC10 OR (MSVC AND MSVC_VERSION GREATER 1600)) |
|
|
|
if(CMAKE_SIZEOF_VOID_P EQUAL 8) |
|
set(PLATEFORM_BITS x64) |
|
else() |
|
set(PLATEFORM_BITS Win32) |
|
endif() |
|
|
|
if(NOT MSVCsuc_DEFAULT AND PLATEFORM_BITS) |
|
|
|
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/${targetName}.vcxproj.user" |
|
"<?xml version=\"1.0\" encoding=\"utf-8\"?> |
|
<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"> |
|
<PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|${PLATEFORM_BITS}'\"> |
|
<LocalDebuggerCommand>${MSVCsuc_COMMAND}</LocalDebuggerCommand> |
|
<LocalDebuggerCommandArguments>${MSVCsuc_ARGS}</LocalDebuggerCommandArguments> |
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor> |
|
<LocalDebuggerWorkingDirectory>${MSVCsuc_WORKING_DIR}</LocalDebuggerWorkingDirectory> |
|
</PropertyGroup> |
|
<PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|${PLATEFORM_BITS}'\"> |
|
<LocalDebuggerCommand>${MSVCsuc_COMMAND}</LocalDebuggerCommand> |
|
<LocalDebuggerCommandArguments>${MSVCsuc_ARGS}</LocalDebuggerCommandArguments> |
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor> |
|
<LocalDebuggerWorkingDirectory>${MSVCsuc_WORKING_DIR}</LocalDebuggerWorkingDirectory> |
|
</PropertyGroup> |
|
<PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='MinSizeRel|${PLATEFORM_BITS}'\"> |
|
<LocalDebuggerCommand>${MSVCsuc_COMMAND}</LocalDebuggerCommand> |
|
<LocalDebuggerCommandArguments>${MSVCsuc_ARGS}</LocalDebuggerCommandArguments> |
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor> |
|
<LocalDebuggerWorkingDirectory>${MSVCsuc_WORKING_DIR}</LocalDebuggerWorkingDirectory> |
|
</PropertyGroup> |
|
<PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='RelWithDebInfo|${PLATEFORM_BITS}'\"> |
|
<LocalDebuggerCommand>${MSVCsuc_COMMAND}</LocalDebuggerCommand> |
|
<LocalDebuggerCommandArguments>${MSVCsuc_ARGS}</LocalDebuggerCommandArguments> |
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor> |
|
<LocalDebuggerWorkingDirectory>${MSVCsuc_WORKING_DIR}</LocalDebuggerWorkingDirectory> |
|
</PropertyGroup> |
|
</Project>" |
|
) |
|
if(MSVCsuc_VERBOSE) |
|
message(STATUS "[MSVCsetUserCommand] Write ${CMAKE_CURRENT_BINARY_DIR}/${targetName}.vcxproj.user file") |
|
message(STATUS " to execute ${MSVCsuc_COMMAND} ${MSVCsuc_ARGS}") |
|
message(STATUS " from derectory ${MSVCsuc_WORKING_DIR}") |
|
message(STATUS " on visual studio run debugger button") |
|
endif() |
|
|
|
else() |
|
message(WARNING "PLATEFORM_BITS is undefined...") |
|
endif() |
|
|
|
else() |
|
if(MSVCsuc_VERBOSE) |
|
message(WARNING "MSVCsetUserCommand is disable because too old MSVC is used (need MSVC10 2010 or newer)") |
|
endif() |
|
endif() |
|
|
|
endfunction() |
|
|