tipologia documentos documental archivo build cmake

build - documental - tipologia de documentos de archivo



¿Cómo pelar extensiones de archivo con cmake(o cualquier otra herramienta de construcción portátil)? (1)

Si no trata estos archivos de script como destinos de CMake y los trata como archivos, debería poder:

project (Mixed Example) add_executable (banana banana.cpp) add_executable (grape grape.hs) install (TARGETS banana grape DESTINATION bin) if (UNIX) install (FILES orange.py DESTINATION bin RENAME orange) install (FILES strawberry.lua DESTINATION bin RENAME strawberry) else (WIN32) install (FILES orange.py strawberry.lua DESTINATION bin) endif ()


Si desea utilizar una función en lugar de llamar a install (FILES ... varias veces, puede hacer lo siguiente:

function (install_files) if (UNIX) foreach (file ${ARGV}) get_filename_component (name_without_extension ${file} NAME_WE) install (FILES ${file} DESTINATION bin RENAME ${name_without_extension}) endforeach () else (WIN32) install (FILES ${ARGV} DESTINATION bin) endif () endfunction () install (TARGETS banana grape DESTINATION bin) install_files (orange.py strawberry.lua)

Estoy trabajando en un proyecto que consiste en varios ejecutables pequeños. Los ejecutables deben ejecutarse desde la terminal (o el símbolo del sistema) y pueden escribirse en cualquier lenguaje de programación. Aquellos escritos en idiomas interpretados tienen una línea shebang para sistemas unixy, mientras que su extensión de archivo se agrega a la variable de entorno PATHEXT en Windows.

Para que el uso de los archivos ejecutables sea coherente en todos los lenguajes de programación y en los principales grupos de plataformas, necesito quitar la extensión de archivo del nombre de archivo de los programas interpretados en sistemas unixy. (Por "uso consistente" quiero decir: simplemente escriba el nombre del programa para ejecutarlo, sin necesidad de especificar su extensión de archivo).

Para ir más al concreto, supongamos que escribo algo como el siguiente archivo CMakeLists:

project (Mixed Example) add_executable (banana banana.cpp) add_executable (grape grape.hs) add_script? (orange orange.py) add_script? (strawberry strawberry.lua) install (TARGETS banana grape orange strawberry DESTINATION bin)

Luego quiero que banana.cpp y grape.hs de la forma habitual, mientras que quiero que las extensiones de los archivos orange.py y strawberry.lua orange.py condicionalmente, dependiendo de la plataforma. Por lo tanto, el directorio bin debe contener los siguientes archivos en un sistema unixy:

banana grape orange strawberry

y lo siguiente en Windows:

banana.exe grape.exe orange.py strawberry.lua

¿Cómo puedo hacer eso?