Modificare CFLAGS negli SlackBuild con CMAKE
Inviato: mar 15 set 2015, 17:59
Ho dei dubbi sull'uso delle CFLAGS negli SlackBuild con cmake
In pratica nel template di SBO e negli SlackBuild qui su Slacky c'è questo:
così facendo però viene modificata la variabile CFLAGS ma poi viene detto di usare CFLAGS_RELEASE
quindi secondo me ci sono due strade, come del resto avviene in alcuni SlackBuilds
1) modifica di NONE
2) uso di RELEASE
Ora, solitamente RELEASE di default ha "-O3 -DNDEBUG" mentre NONE è vuota.
Io pensavo che fosse per usare flags aggiungendole a RELEASE, ma ho fatto delle prove dei make generati e non lo fa. Magari era solo in quei 3 che ho provato, boh.
La differenza tra le due opzioni è che cambia l'ordine dell'aggiunta dei flags, tanto per farti capire questo è quello di Keepassx
quindi penso che sia ininfluente la prima o la seconda, mentre usando il template produce
come si vede c'è -O3 -DNDEBUG in mezzo, cioè la variabile CFLAGS_RELEASE che verrà utilizzata
Per poter usare NDEBUG io ho fatto così
ma sarebbe stato uguale
Nella documentazione
http://www.cmake.org/Wiki/CMake_Useful_ ... _and_Tools
dicono la stessa cosa, o almeno così mi sembra
nei template invece viene impostata CMAKE_CXX_FLAGS e poi usato CMAKE_BUILD_TYPE=Release.
Secondo voi com'è giusto?
spero di essermi spiegato
P.S.
Pat modifica entrambe le variabili, per esempio da
ftp://ftp.slackware.com/pub/slackware/s ... e/kdeadmin
In pratica nel template di SBO e negli SlackBuild qui su Slacky c'è questo:
Codice: Seleziona tutto
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_BUILD_TYPE=Releasequindi secondo me ci sono due strade, come del resto avviene in alcuni SlackBuilds
1) modifica di NONE
Codice: Seleziona tutto
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_BUILD_TYPE=NoneCodice: Seleziona tutto
. -DCMAKE_CXX_FLAGS_RELEASE:STRING="$SLKCFLAGS" \
-DCMAKE_BUILD_TYPE=ReleaseOra, solitamente RELEASE di default ha "-O3 -DNDEBUG" mentre NONE è vuota.
Io pensavo che fosse per usare flags aggiungendole a RELEASE, ma ho fatto delle prove dei make generati e non lo fa. Magari era solo in quei 3 che ho provato, boh.
La differenza tra le due opzioni è che cambia l'ordine dell'aggiunta dei flags, tanto per farti capire questo è quello di Keepassx
Codice: Seleziona tutto
< utils/CMakeFiles/kdbx-extract.dir/flags.make:CXX_FLAGS = -fno-common -fstack-protector --param=ssp-buffer-size=4 -Wall -Wextra
-Wundef -Wpointer-arith -Wno-long-long -Wformat=2 -Wmissing-format-attribute -fvisibility=hidden -fvisibility-inlines-hidden -fno-exceptions -fno-rtti -Wnon-virtual-dtor -Wold-style-cast -Woverloaded-virtual -Werror=format-security -Wcast-align -std=c++0x -O2 -fPIC -isystem /usr/lib64/qt/include -isystem /usr/lib64/qt/include/QtGui -isystem /usr/lib64/qt/include/QtTest -isystem /usr/lib64/qt/include/QtCore -I/tmp/pkg/keepassx-2.0-beta2/utils/../src
---
> utils/CMakeFiles/kdbx-extract.dir/flags.make:CXX_FLAGS = -O2 -fPIC -fno-common -fstack-protector --param=ssp-buffer-size=4 -Wall -Wextra -Wundef -Wpointer-arith -Wno-long-long -Wformat=2 -Wmissing-format-attribute -fvisibility=hidden -fvisibility-inlines-hidden -fno-exceptions -fno-rtti -Wnon-virtual-dtor -Wold-style-cast -Woverloaded-virtual -Werror=format-security -Wcast-align -std=c++0x -isystem /usr/lib64/qt/include -isystem /usr/lib64/qt/include/QtGui -isystem /usr/lib64/qt/include/QtTest -isystem /usr/lib64/qt/include/QtCore -I/tmp/pkg/keepassx-2.0-beta2/utils/../srcCodice: Seleziona tutto
> utils/CMakeFiles/kdbx-extract.dir/flags.make:CXX_FLAGS = -O2 -fPIC -fno-common -fstack-protector --param=ssp-buffer-size=4 -Wall -Wextra -Wundef -Wpointer-arith -Wno-long-long -Wformat=2 -Wmissing-format-attribute -fvisibility=hidden -fvisibility-inlines-hidden -fno-exceptions -fno-rtti -Wnon-virtual-dtor -Wold-style-cast -Woverloaded-virtual -Werror=format-security -Wcast-align -std=c++0x -O3 -DNDEBUG -isystem /usr/lib64/qt/include -isystem /usr/lib64/qt/include/QtGui -isystem /usr/lib64/qt/include/QtTest -isystem /usr/lib64/qt/include/QtCore -I/tmp/pkg/keepassx-2.0-beta2/utils/../srcPer poter usare NDEBUG io ho fatto così
Codice: Seleziona tutto
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS -DNDEBUG" \
-DCMAKE_BUILD_TYPE=None \Codice: Seleziona tutto
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS -DNDEBUG" \
-DCMAKE_BUILD_TYPE=Release \Nella documentazione
http://www.cmake.org/Wiki/CMake_Useful_ ... _and_Tools
dicono la stessa cosa, o almeno così mi sembra
Codice: Seleziona tutto
CMAKE_BUILD_TYPE :
None (CMAKE_C_FLAGS or CMAKE_CXX_FLAGS used)
Release (CMAKE_C_FLAGS_RELEASE or CMAKE_CXX_FLAGS_RELEASE)Secondo voi com'è giusto?
spero di essermi spiegato
P.S.
Pat modifica entrambe le variabili, per esempio da
ftp://ftp.slackware.com/pub/slackware/s ... e/kdeadmin
Codice: Seleziona tutto
cmake \
$KDE_OPT_ARGS \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_C_FLAGS_RELEASE:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS_RELEASE:STRING="$SLKCFLAGS" \
-DCMAKE_BUILD_TYPE=Release \