我正在开发Apache2模块作为更大项目的子项目。源文件是(例如)module_example.c。 Apache2模块使用apxs2编译,因此:
% apxs2 -c module_example.c
我已成功添加规则(有关ODB如何工作的图案)到我的Qt Creator .pro文件中以查找和使用apxs2,如下所示:
APXS_FLAGS =
APXS_FILES += module_example.c
for(dir, APXS_FILES) {
APXS_PWD_FILES += $$PWD/$${dir}
}
apxs.name = apxs2 -c ${QMAKE_FILE_IN}
apxs.input = APXS_PWD_FILES
apxs.output = ${QMAKE_FILE_BASE}.so
apxs.commands = apxs2 $$APXS_FLAGS -c ${QMAKE_FILE_IN}
apxs.depends = $$APXS_PWD_FILES
apxs.clean = module_${QMAKE_FILE_BASE}.so
QMAKE_EXTRA_COMPILERS += apxs
QtCreator使用apxs2正确编译模块(尽管它将二进制文件保留在源目录而不是构建目录中,这是不理想的),但还尝试使用GCC编译它(哪个失败了)。我如何告诉Qt Creator使用我的“额外编译器”而不是正常的?将扩展名更改为其他内容(例如module_example.apxs)似乎不是一个选项,因为apxs2没有选项来指定C源文件的扩展名。有什么想法吗?
答案 0 :(得分:2)
这不是Qt Creator所做的,而是qmake。您需要从module_example.c
中删除SOURCES
。问题出在您未显示的.pro文件中。
如果您希望从Qt Creator轻松访问该文件,请将其添加到OTHER_FILES
。它将显示在IDE中的项目结构中,但默认情况下不会编译。
此外,您可以告诉apxs输出到构建路径。您需要${OUT_PWD}
。