reconoce proyecto linea interno externo compilar como comandos comando visual-studio dll build cmake

proyecto - Cómo establecer la variable de entorno de ruta usando CMake y Visual Studio para ejecutar la prueba



compilar proyecto c# linea comandos (4)

Acabo de descubrir esta pregunta ahora. Para depurar archivos cmake que uso

MESSAGE( STATUS "static text ${variable}" )

Nunca tuve que configurar el camino para que se ejecutaran mis pruebas. ¿Estás usando CTest? Parece que el enlace que está siguiendo se usa con ctest.

Si estuviera tratando de hacer que esto funcione, usaría set_tests_properties explícitamente primero.

set_tests_properties(SomeTest PROPERTIES ENVIRONMENT "PATH=c:/somedir;c:/otherdir")

Entonces hazlo más general.

Estoy usando CMake para generar archivos de proyecto de Visual Studio. Quiero ejecutar el ejecutable de prueba después de configurar la variable de entorno PATH para que pueda cargar el dll requerido. Intenté según la discusión en http://www.mail-archive.com/[email protected]/msg21493.html pero no funciona.

¿Has usado CMake con Visual Studio para este propósito? Por favor comparta sus experiencias.

Además, no encuentro una manera fácil de depurar mi script CMake, por ejemplo, para ver qué valor le asigna a la variable PATH. Establecer CMake verbose con CMAKE_VERBOSE_MAKEFILE no ayuda. ¿Cómo voy a depurarlo yo mismo?



Para establecer una configuración de proyecto personalizada en Visual Studio desde CMake, puede usar un archivo XML como una plantilla que se puede configurar desde CMake para que funcione como el archivo .user .
En mi trabajo, utilizamos esto para establecer parámetros de depuración personalizados.

Compruebe el directorio que contiene los archivos .vcproj generados para la configuración del usuario en los archivos .user . Aquí hay un fragmento de un archivo UserTemplate.vcproj ejemplo que usamos.

<?xml version="1.0" encoding="Windows-1252"?> <VisualStudioUserFile ProjectType="Visual C++" Version="9.00" ShowAllFiles="false" > <Configurations> <Configuration Name="Debug|@USERFILE_PLATFORM@" > <DebugSettings Command="@USERFILE_COMMAND_DEBUG@" WorkingDirectory="@USERFILE_WORKING_DIRECTORY_DEBUG@" CommandArguments="@USERFILE_COMMAND_ARGUMENTS_DEBUG@" Attach="false" DebuggerType="3" Remote="1" RemoteMachine="@USERFILE_REMOTE_MACHINE_DEBUG@" <!-- More settings removed for snippet --> /> </Configuration> <!-- Rest of Configurations -->

De esta forma, puede inyectar las variables necesarias de CMake en el archivo .user . En CMake puede establecer las variables de CMake apropiadas (y agregar más en el archivo de plantilla si las necesita). A continuación, puede hacer algo como esto para configurar el archivo.

# Find user and system name SET(SYSTEM_NAME $ENV{USERDOMAIN} CACHE STRING SystemName) SET(USER_NAME $ENV{USERNAME} CACHE STRING UserName) # Configure the template file SET(USER_FILE ${_projectName}.vcproj.${SYSTEM_NAME}.${USER_NAME}.user) SET(OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/${USER_FILE}) CONFIGURE_FILE(UserTemplate.user ${USER_FILE} @ONLY)


Puede dar cualquier opción de forma global con la nueva propiedad de destino VS_USER_PROPS (versión> = 3.8).

Aquí hay un ejemplo de trabajo:

CMakeLists.txt

cmake_minimum_required(VERSION 3.0) project(SetEnvPathTest) file(WRITE main.cpp [=[ // http://en.cppreference.com/w/cpp/utility/program/getenv #include <iostream> #include <cstdlib> int main() { if(const char* env_p = std::getenv("PATH")) std::cout << "Your PATH is: " << env_p << ''/n''; } ]=]) add_executable(${PROJECT_NAME} main.cpp) file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.Cpp.user.props" [=[ <?xml version="1.0" encoding="utf-8"?> <Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup Condition="''$(Configuration)|$(Platform)''==''Debug|Win32''"> <LocalDebuggerEnvironment>PATH=C:/Test</LocalDebuggerEnvironment> </PropertyGroup> <PropertyGroup Condition="''$(Configuration)|$(Platform)''==''Release|Win32''"> <LocalDebuggerEnvironment>PATH=C:/Test</LocalDebuggerEnvironment> </PropertyGroup> </Project> ]=]) set_target_properties( ${PROJECT_NAME} PROPERTIES VS_USER_PROPS "${PROJECT_NAME}.Cpp.user.props" )

Referencias