如何使用 ExternalProject 的编译器构建可执行文件
How to build executable with a compiler from ExternalProject
我有一个生成编译器的外部项目
include(ExternalProject)
ExternalProject_Add(gprolog
GIT_REPOSITORY "git@github.com:didoudiaz/gprolog.git"
GIT_TAG "master"
SOURCE_DIR "${CMAKE_SOURCE_DIR}/3rdparty/gprolog"
BUILD_IN_SOURCE true
CONFIGURE_COMMAND cd src && ./configure --with-install-dir=${CMAKE_SOURCE_DIR}/3rdparty/gprolog-build
BUILD_COMMAND cd src && make
INSTALL_COMMAND cd src && make install
)
因此,我想 运行:
add_executable(runner src/runner.c app/application.pro)
include_directories(runner "${CMAKE_SOURCE_DIR}/3rdparty/gprolog-build/include")
但我需要使用 ${CMAKE_SOURCE_DIR}/3rdparty/gprolog-build/bin/gplc
.
而不是 gcc
或 clang
当我礼貌地要求 CMake 通过添加
假装 gplc
只是另一个 C 编译器时
set(CMAKE_C_COMPILER "${CMAKE_SOURCE_DIR}/3rdparty/gprolog-build/bin/gplc")
它用
对着我尖叫
Cannot get compiler information:
Compiler exited with error code 1: .../gprolog/3rdparty/gprolog-build/bin/gplc -xc -g -isysroot ..../Developer/SDKs/MacOSX11.3.sdk -fpch-preprocess -v -dD -E
Apple clang version 12.0.5 (clang-1205.0.22.11)
Target: x86_64-apple-darwin20.5.0
Thread model: posix
InstalledDir: .../XcodeDefault.xctoolchain/usr/bin
clang: warning: -lm: 'linker' input unused [-Wunused-command-line-argument]
clang: error: cannot specify -o when generating multiple output files
compilation failed
缺少逆向工程 CMake 的 enable_language
实现模块来为 Prolog 添加您自己的模块,您总是可以走 add_custom_command
的路线并要求您的编译器生成目标文件,这些文件可以包含为add_executable
命令中的来源。
如果您对有关 Prolog 编译器如何工作的问题添加一些细节,我可以帮助您编写自定义命令。
我有一个生成编译器的外部项目
include(ExternalProject)
ExternalProject_Add(gprolog
GIT_REPOSITORY "git@github.com:didoudiaz/gprolog.git"
GIT_TAG "master"
SOURCE_DIR "${CMAKE_SOURCE_DIR}/3rdparty/gprolog"
BUILD_IN_SOURCE true
CONFIGURE_COMMAND cd src && ./configure --with-install-dir=${CMAKE_SOURCE_DIR}/3rdparty/gprolog-build
BUILD_COMMAND cd src && make
INSTALL_COMMAND cd src && make install
)
因此,我想 运行:
add_executable(runner src/runner.c app/application.pro)
include_directories(runner "${CMAKE_SOURCE_DIR}/3rdparty/gprolog-build/include")
但我需要使用 ${CMAKE_SOURCE_DIR}/3rdparty/gprolog-build/bin/gplc
.
gcc
或 clang
当我礼貌地要求 CMake 通过添加
假装gplc
只是另一个 C 编译器时
set(CMAKE_C_COMPILER "${CMAKE_SOURCE_DIR}/3rdparty/gprolog-build/bin/gplc")
它用
对着我尖叫Cannot get compiler information:
Compiler exited with error code 1: .../gprolog/3rdparty/gprolog-build/bin/gplc -xc -g -isysroot ..../Developer/SDKs/MacOSX11.3.sdk -fpch-preprocess -v -dD -E
Apple clang version 12.0.5 (clang-1205.0.22.11)
Target: x86_64-apple-darwin20.5.0
Thread model: posix
InstalledDir: .../XcodeDefault.xctoolchain/usr/bin
clang: warning: -lm: 'linker' input unused [-Wunused-command-line-argument]
clang: error: cannot specify -o when generating multiple output files
compilation failed
缺少逆向工程 CMake 的 enable_language
实现模块来为 Prolog 添加您自己的模块,您总是可以走 add_custom_command
的路线并要求您的编译器生成目标文件,这些文件可以包含为add_executable
命令中的来源。
如果您对有关 Prolog 编译器如何工作的问题添加一些细节,我可以帮助您编写自定义命令。