Error trying to compile QT app: any ideas?

Forum thread started by un_spacyar on Sat, 2015-04-11 23:34

Hi. I'm trying to compile the TagainiJisho app (is a japanese dictionary), but I get the following error:

cc1plus: Invalid option `-Wextra'
cc1plus: Invalid option `-Wno-unused-parameter'
make[2]: *** [src/sqlite/CMakeFiles/tagaini_sqlite.dir/Error.cc.o] Error 1
make[1]: *** [src/sqlite/CMakeFiles/tagaini_sqlite.dir/all] Error 2
make: *** [all] Error 2

I'm using a x86_gcc2 nightly. I do the follow steps before:

setarch x86
cmake 

This is the content of the CmakeLists.txt

# The project name decides the naming pattern of many things - choose it according
# to the standard of the platform we run on.
if(APPLE)
	project("Tagaini Jisho")
else(APPLE)
	project("tagainijisho")
endif(APPLE)
 
# Set the program name to be the same as the project
set(tagaini_binary ${CMAKE_PROJECT_NAME})
 
set(VERSION 1.0.3)
 
cmake_minimum_required(VERSION 2.8.0)
 
find_package(Qt4 4.5 REQUIRED)
# FIXME only required when CMake downloads dictionary files. Not necessary for building from source package.
find_program(GUNZIP NAMES gunzip REQUIRED)
 
# Global GCC options
if(CMAKE_COMPILER_IS_GNUCC)
	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wnon-virtual-dtor -Wno-unused-parameter -fno-exceptions -fno-rtti")
endif(CMAKE_COMPILER_IS_GNUCC)
 
# Add the default database lookup data path for Linux if not defined
if(UNIX AND NOT APPLE AND NOT DATA_DIR)
	set(DATA_DIR "${CMAKE_INSTALL_PREFIX}/share/tagainijisho")
endif(UNIX AND NOT APPLE AND NOT DATA_DIR)
 
# 64 bits Intel binary with 10.6 compatibility 
if(APPLE)
	set(CMAKE_OSX_ARCHITECTURES "${ARCHS_STANDARD_64_BIT}")
	set(CMAKE_OSX_SYSROOT "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk")
	set(CMAKE_OSX_DEPLOYMENT_TARGET "10.6")
	set(CMAKE_PREFIX_PATH "${CMAKE_OSX_SYSROOT}/usr")  
	set(CMAKE_FRAMEWORK_PATH "${CMAKE_OSX_SYSROOT}/Library/Frameworks:${CMAKE_OSX_SYSROOT}/System/")
	set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/pack/MacOS/")
endif(APPLE)
if(WIN32)
	set(extra_link_flags "-static-libgcc -static-libstdc++ -mwindows")
endif(WIN32)
 
# By default, enable all languages
if(NOT DICT_LANG)
	set(DICT_LANG "fr;de;es;ru;it;pt;th;tr")
endif()
# Set DICT_LANG to always appear in the cache
set(DICT_LANG ${DICT_LANG} CACHE STRING "Languages to use for the dictionary data (semicolon-separated 2-letter codes)")
 
# Debug options
option(DEBUG_ENTRIES_CACHE "Debug entries cache behavior" OFF)
option(DEBUG_PATHS "Debug files lookup" OFF)
option(DEBUG_DETAILED_VIEW "Debug detailed view output" OFF)
option(DEBUG_QUERIES "Debug SQL queries" OFF)
option(DEBUG_TRANSACTIONS "Debug database transactions" OFF)
option(DEBUG_LISTS "Debug lists (very slow)" OFF)
 
# Build tests suite?
option(BUILD_TESTS "Build tests suite" OFF)
 
# Databases helper targets
add_custom_target(databases ALL)
 
# i18n
add_subdirectory(i18n)
 
# Source code
add_subdirectory(src)
 
# Docs
add_subdirectory(doc)
 
# Packaging stuff
add_subdirectory(pack)
 
# External resources fetching and generation
if(NOT EXISTS ${CMAKE_SOURCE_DIR}/3rdparty/)
	FILE(MAKE_DIRECTORY ${CMAKE_SOURCE_DIR}/3rdparty/)
endif()
 
# Uninstall
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY)
add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")

Anyone could help me? Thanks in advance!!!

Comments

Re: Error trying to compile QT app: any ideas?

It looks like you are still using the gcc2 compiler. In order to make the compiler selection permanent with cmake you can do this:
  • Remove all generated files (make clean). cmake does not like changin compilers after having configured the project once.
  • PKG_CONFIG_LIBDIR=/boot/system/develop/lib/x86/pkgconfig CC=gcc-x86 CXX=g++-x86 cmake
  • make
This makes sure cmake will use the correct version of gcc, and also uses the right pkg-config files for finding libraries.

Re: Error trying to compile QT app: any ideas?

Thanks PulkoMandy!

However, I have a dumb question:
The sentence:  PKG_CONFIG_LIBDIR=/boot/system/develop/lib/x86/pkgconfig CC=gcc-x86 CXX=g++-x86 cmake where must be set? (I tried it in the Terminal, but doesn't work).

Sorry for my "newbie" question :-)

Re: Error trying to compile QT app: any ideas?

Yes, this should be done in terminal. What it does is set some environment variables and run cmake. You must put everything in Terminal on a single line. To do it in multiple lines you will need to "export" the variables.

Re: Error trying to compile QT app: any ideas?

Thanks again, PulkoMandy.

I finally get the PKG_CONFIG_LIBDIR to work.
The app started to compile, however, it stopped with the following error:

Linking CXX executable build_jmdict_db
/boot/system/develop/tools/x86/bin/../lib/gcc/i586-pc-haiku/4.8.4/../../../../i586-pc-haiku/bin/ld: cannot find -lpthread
/boot/system/develop/tools/x86/bin/../lib/gcc/i586-pc-haiku/4.8.4/../../../../i586-pc-haiku/bin/ld: cannot find -ldl
collect2: error: ld returned 1 exit status
make[2]: *** [src/core/jmdict/build_jmdict_db] Error 1
make[1]: *** [src/core/jmdict/CMakeFiles/build_jmdict_db.dir/all] Error 2
make: *** [all] Error 2

I found some old posts about Haiku lacking that library. Is this still true?

Thank you again !!!

Re: Error trying to compile QT app: any ideas?

It is not exactly lacking. It's just thqt we put the code in different places. Where most UNIX systems available split their standard library in several pieces (libc, libm, libpthread, libdl), BeOS engineers decided to have everything in a single library (libroot.so).

Your CMakeLists.txt is apparently not checking for this. To search for pthreads you could use find_package(threads REQUIRED), and then target_link_libraries (myapp ${CMAKE_THREAD_LIBS_INIT}) instead of the target_link_libraries (myapp pthread) you probably have currently.

For libdl you can use the preset variable http://www.cmake.org/cmake/help/v3.0/variable/CMAKE_DL_LIBS.html. So just replace target_lik_libraries(... -ldl) with target_link_libraries(... $(CMAKE_DL_LIBS)).

Re: Error trying to compile QT app: any ideas?

Thanks again, Pulkomandy. I will try to modify the CmakeLists.txt with that changes.