我正在开发一个由多个小型可执行文件组成的项目。可执行文件旨在从终端(或命令提示符)运行,并且可以用任何编程语言编写。那些用解释语言编写的文件有一个适用于 unixy 系统的 shebang 行,而它们的文件扩展名被添加到 Windows 上的 PATHEXT 环境变量中。
为了在所有编程语言和两个主要平台组中一致地使用可执行文件,我需要从 unixy 系统上解释程序的文件名中去除文件扩展名。(我所说的“一致使用”是指:只需键入程序的名称即可启动它,而无需指定其文件扩展名。)
为了更深入地了解具体情况,假设我编写了类似于以下 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)
然后我希望banana.cpp
和grape.hs
以通常的方式编译,而我希望根据平台有条件地剥离orange.py
和的文件扩展名。strawberry.lua
因此,该bin
目录应包含 unixy 系统上的以下文件:
banana grape orange strawberry
以及 Windows 上的以下内容:
banana.exe grape.exe orange.py strawberry.lua
我怎么做?