Qtを使用すると、CMakeは自動的に-fPIC
フラグをコンパイルオプションに追加します。私は-fpic
を使いたいので、すべてのCmake変数を調べ、-fPIC
を-fpic
に置き換えました。-fPICを-fpicに置き換えます。
cmake_minimum_required(VERSION 3.5)
project(sss)
find_package(Qt5 REQUIRED COMPONENTS Core Sql)
get_cmake_property(_variableNames VARIABLES)
foreach (_variableName ${_variableNames})
if (NOT "${${_variableName}}" STREQUAL "")
string(REPLACE "-fPIC" "-fpic" ${_variableName} ${${_variableName}})
string(REPLACE "-fPIE" "-fpie" ${_variableName} ${${_variableName}})
endif()
#message(STATUS "${_variableName}=${${_variableName}}")
endforeach()
set(CMAKE_CXX_FLAGS "-fpie")
set(CMAKE_EXE_LINKER_FLAGS "-fpie -pie")
add_executable(sss main.cpp)
target_link_libraries(sss Qt5::Core Qt5::Sql)
main.cpp
は
#include <QSqlDatabase>
int main(){
QSqlDatabase::addDatabase("QPSQL");
}
は残念ながらCMakeのはまだそれが含まれていないリストされている変数althoguh、-fPIC
フラグを追加して含まれています
Building CXX object CMakeFiles/sss.dir/main.cpp.o
/usr/bin/c++ -DQT_CORE_LIB -DQT_NO_DEBUG -DQT_SQL_LIB -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -isystem /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -isystem /usr/include/x86_64-linux-gnu/qt5/QtSql -fPIC -o CMakeFiles/sss.dir/main.cpp.o -c src/main.cpp
がどのように私は-fpic
と-fPIC
を置き換えることができますか?
これはQt自体から来ていると思います([here](https://cmake.org/Bug/view.php?id=16002)を参照)。 ['INTERFACE_COMPILE_OPTIONS'](https://cmake.org/cmake/help/latest/prop_tgt/INTERFACE_COMPILE_OPTIONS.html)を' -fPIC'に設定します。 'find_package()'の後に 'set_property(TARGET Qt5 ::コアPROPERTY INTERFACE_COMPILE_OPTIONS" -fpic ")'を追加してみてください。 – Florian