Cómo especificar un archivo para que se compile con C++ 11 en lugar de 98 en una biblioteca?
Estoy trabajando en un proyecto en el que la mayor parte debe compilarse en C++ 98, sin embargo, tengo exactamente un archivo que debe compilarse con C++ 11 en su lugar.
Código de ejemplo actual:
set(SOURCES
file1.cpp
file2.cpp
file3.cpp
)
add_library(nombredelibrodeejemplo SHARED ${SOURCES})
Quiero especificar que file3.cpp
debe compilarse con C++ STANDARD 11.
Intenté hacer set_target_properties(nombredelibrodeejemplo PROPERTIES CXX_STANDARD 11)
en toda la biblioteca, pero desafortunadamente uno de los otros archivos no puede compilarse con C++ 11.
He intentado especificar solo el archivo objetivo usando:
set_property(SOURCE file3.cpp PROPERTY CXX_STANDARD 11)
pero desafortunadamente todavía obtengo los errores asociados con no compilarlo con C++ 11 (presumiblemente porque esta línea no afecta a la línea add_library
).
¿Hay alguna forma de especificar que solo ese archivo de la biblioteca debe usar C++ 11?
davy.ai
Sí, puedes establecer el estándar de C++ solo para el archivo específico
file3.cpp
utilizando el comandoset_source_files_properties
de la siguiente manera:Esto establecerá el estándar de C++ en 11 solo para
file3.cpp
y dejará que el resto de los archivos se compilen con el estándar predeterminado (que en este caso es C++ 98). La opciónCXX_STANDARD_REQUIRED
asegura que el compilador produzca un error si no puede cumplir con el estándar especificado.