Requested modules not available: vtkRendering - cmake

I have been trying to build VTK and run the first example in the tutorial,
the cone , but when I do
cmake .
I got the following Error:
CMake Error at /usr/local/lib/cmake/vtk-6.3/vtkModuleAPI.cmake:120 (message):
Requested modules not available:
vtkRendering
Call Stack (most recent call first):
/usr/local/lib/cmake/vtk-6.3/VTKConfig.cmake:80 (vtk_module_config)
CMakeLists.txt:11 (find_package)
-- Configuring incomplete, errors occurred!
I am using Red Hat Enterprise Linux Server release 5.5 (Tikanga).
Any suggestion would be appriciated!

I had the same problem, simply due to the fact that "vtkRendering" itself does not exist in recent versions of VTK (I'm using 6.3).
You should specify for example vtkRenderingOpenGL, or vtkRenderingQt, etc...
Hope it helps!

Related

Build libmariadb with Yocto

I am trying to make a recipe for a C++ app that uses libmariadb. While developing I was using vcpkg but now I want to use Yocto.
Here is the application_1.0.0.bb file:
# Metadata
SUMMARY = "Customer API Backend"
DESCRIPTION = "Customer API in C++ using gRPC"
# License is closed, no checksum to avoid warnings
LICENSE = "CLOSED"
LIC_FILE_CHKSUM = ""
DEPENDS = "protobuf protobuf-c protobuf-native grpc grpc-native openssl mariadb poco"
SRCREV = "${AUTOREV}"
SRC_URI = "git://git#gitlab.com/software/projects/embedded/application.git;protocol=ssh;branch=master;"
S = "${WORKDIR}/git"
inherit pkgconfig cmake
Here is the CMake part that poses problem with Yocto:
find_package(unofficial-libmariadb CONFIG REQUIRED)
find_package(Poco REQUIRED COMPONENTS Data DataMySQL)
target_link_libraries(database_api
PRIVATE
unofficial::libmariadb
Poco::DataMySQL
)
I get this error message during the configure step (CMake):
CMake Error at src/libraries/external_interfaces/database_api/CMakeLists.txt:20 (find_package):
Could not find a package configuration file probided by
"unofficial-libmariadb" with any of the following names:
unofficial-libmariadbConfig.cmake
unofficial-libmariadb-config.cmake
Add the installation prefix of "unofficial-libmariadb" to CMAKE_PREFIX_PATH
or set "unofficial-libmariadb_DIR" to a directory containing one of the
above files. If "unofficial-libmariadb" provides a separate development
package or SDK, be sure it has been installed.
I tried adding mariadb-native to the DEPENDS on the bitbake recipe but then I get this error messagewhen configuring mariadb-native`:
CMake Error at /home/oe-core/build/tmp/work/x86_64-linux/mariadb-native/10.7.5-r0/recipe-sysroot-native/usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find GnuTLS (missing: GNUTLS_LIBRARY GNUTLS_INCLUDE_DIR)
(Required is at least version "3.3.24")
Call Stack (most recent call first):
(...)
-- Configuring incomplete, errors occurred!
Ok I figured it out by using more recent versions of the mariadb recipes + vcpkg mariadb port patches:
For the mariadb-native build:
Add a mariadb-native_%.bbappend in a recipes-dbs/mysql/ folder in your layer:
DEPENDS:append = " gnutls-native fmt-native"
Alternative is to have the more recent mariadb-native_%.bb recipe as it is already included. If, like me, you have 10.7.4 or something, the bbappend is required.
For the unofficial-mariadb target:
Using Yocto's devtool on mariadb recipe, I just reproduced the patches that vcpkg port of libmariadb has (found here: https://github.com/microsoft/vcpkg/tree/master/ports/libmariadb). The one that matters is the modification to libmariadb/CMakeLists.txt (but from mariadb recipe this is libmariadb/libmariadb/CMakeLists.txt since this is a higher repo layer). This patch export unofficial-libmariadb and also uses the unofficial:: namespace. This makes my project compatible.

Missing protobuf configuration when installing via ue4-conan

I'm trying to get gRPC running in Unreal Engine 4, using the conan-ue4cli tool. I use the provided grpc-ue4 recipe linked here: https://github.com/adamrehn/ue4-conan-recipes/tree/master/grpc-ue4
While running ue4 conan build "grpc-ue4" an error is thrown "Could not find a package configuration file provided by "Protobuf""
Output:
...
-- Looking for pthread.h
-- Looking for pthread.h - not found
-- Found Threads: TRUE
-- Found c-ares: C:/Users/Redux Gamer/.conan/data/cares-ue4/1.16.1/adamrehn/4.27/package/7333dc905312a2df09e78e1a60d59e628a5f0321/lib/cmake/c-ares/c-ares-config.cmake (found suitable version "1.16.1", minimum required is "1.13.0")
CMake Error at cmake/protobuf.cmake:58 (find_package):
Could not find a package configuration file provided by "Protobuf" with any
of the following names:
ProtobufConfig.cmake
protobuf-config.cmake
Add the installation prefix of "Protobuf" to CMAKE_PREFIX_PATH or set
"Protobuf_DIR" to a directory containing one of the above files. If
"Protobuf" provides a separate development package or SDK, be sure it has
been installed.
Call Stack (most recent call first):
CMakeLists.txt:224 (include)
-- Configuring incomplete, errors occurred!
See also "C:/.conan/9d531a/1/CMakeFiles/CMakeOutput.log".
See also "C:/.conan/9d531a/1/CMakeFiles/CMakeError.log".
grpc-ue4/1.30.2#adamrehn/4.27:
grpc-ue4/1.30.2#adamrehn/4.27: ERROR: Package 'bf9f4e336e64d98ce96ba6aaac093ac1ff3705d4' build failed
grpc-ue4/1.30.2#adamrehn/4.27: WARN: Build folder C:\.conan\9d531a\1
ERROR: grpc-ue4/1.30.2#adamrehn/4.27: Error in build() method, line 98
cmake.configure(source_folder="grpc", args=self.cmake_flags())
ConanException: Error 1 while executing cd C:\.conan\9d531a\1 && ...
I'm running Windows 10, UE4.27, python 3.7.8, cmake 3.21.3. I tried searching for the missing protobuf-config.cmake but it also can't be found in the conan or project folder.
Any suggestions or pointers where to look would be greatly appreciated.
The responsible conan-file is here: https://github.com/adamrehn/ue4-conan-recipes/tree/master/grpc-ue4/1.30.2
This got broken with commit 865c38e99f694e63fd109ae06423472ebb7885a3 (see: https://github.com/adamrehn/ue4-conan-recipes/pull/8)
Reverting this change solved it for me.
To manually fix this:
Go to C:\Users\USERNAME.conan\data\grpc-ue4\1.30.2\adamrehn\4.27\export\conanfile.py and in line 51 change:
"-DProtobuf_DIR=" + os.path.join(protobuf.rootpath, "lib/cmake/protobuf"),
to
"-DProtobuf_DIR=" + os.path.join(protobuf.rootpath, "cmake"),
Then you need to run the command with the --no-cache parameter (otherwise the recipe will be replaced again by the original)
ue4 conan build grpc-ue4 --no-cache

CMake Error at cocos2d/cmake/Modules/CocosConfigDepend.cmake:94 (endmacro): Flow control statements are not properly nested

Hey I'm a newbie cocos 2d x developer, I'm just trying to get a "Hello World" project created in XCode for iOS. From the terminal I'm using the command
cmake ../.. -GXcode -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphoneos
I keep getting these two errors and the xcode project file does not generate.
CMake Error at cocos2d/cmake/Modules/CocosConfigDepend.cmake:94 (endmacro):
Flow control statements are not properly nested.
Call Stack (most recent call first):
cocos2d/cmake/Modules/CocosBuildSet.cmake:43 (include)
CMakeLists.txt:42 (include)
What am I doing wrong?
see attached screenshot
[1]: https://i.stack.imgur.com/cIiNC.jpg
System Specs:
MacOS Big Sur 11.4 (Virtual Machine via VMware)
cocos2d-x-4.0
cocos Console 2.3
Xcode 12.5.1
Python 2.7.16
cmake 3.21.0
CMake 3.14+
Xcode 10+
Visual Studio 2019
Android Studio 3.4+,NDK r19c+
Need https://github.com/leetal/ios-cmake
Try this
enter code here
$mkdir build_ios
$cd build_ios
$cmake .. -GXcode -DCMAKE_TOOLCHAIN_FILE=../ios.toolchain.cmake -DENABLE_ARC=FALSE
$open test.xcodeproj
The default is iOS device project, and platform parameters such as
os.toolchain.cmake support -DPLATFORM=SIMULATOR64 need to be added when adjusting to simulator. Please refer to its documentation

CMake find_package_handle_standard_args not silently failing when wrong version is found?

I'm writing a custom FindXXX.cmake for an imported target, at some point I call
find_package_handle_standard_args(XXX
REQUIRED_VARS XXX_ROOT_DIR
VERSION_VAR XXX_VERSION)
Now, it may happen that I found the imported target (XXX_ROOT_DIR is defined), but that the version is incorrect. In this case, I'd expect something like this:
find_package(XXX 4.5) # no REQUIRED
...to not fail and simply set XXX_Found to false. Currently, this throw a hard-error.
Can I achieve this with find_package_handle_standard_args? I could unset XXX_ROOT_DIR if the version is not correct but then I'd not to perform whatever is done in find_package_handle_standard_args twice.
The actual error is
CMake Error at I:/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:160 (set):
Syntax error in cmake code at
I:/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:160
when parsing string
Could NOT find XXX: Found unsuitable version "4.7", but required is exact version "3.8" (found I:\Softwares\XXX)
Invalid character escape '\S'.
Call Stack (most recent call first):
I:/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:456 (_FPHSA_FAILURE_MESSAGE)
I:/.../FindXXX.cmake:106 (find_package_handle_standard_args)
CMakeLists.txt:8 (find_package)
Answering here since someone might found this while facing a similar issue...
The problem is not at all find_package_handle_standard_args but a bug (I guess we can call it that) in CMake that breaks find_package_handle_standard_args when one of the variable contains \, typically Windows path.
Converting the \ into CMake / using
file(TO_CMAKE_PATH "${XXX_ROOT_DIR}" XXX_ROOT_DIR)
...solves the issue.

FindPostgreSQL.cmake won't work on ubuntu

Ubuntu 12.04
CMake 2.8.9
Postgresql 9.2.2
I'm trying to get the FindPostgreSQL module to find /usr/include/postgresql/libpq-fe.h.
Here's what I have in my CMakeLists.txt:
find_package(PostgreSQL REQUIRED)
This is the error I get:
CMake Error at /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:97 (MESSAGE):
Could NOT find PostgreSQL (missing: PostgreSQL_TYPE_INCLUDE_DIR) (found
version "9.2.2")
Call Stack (most recent call first):
/usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:288 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-2.8/Modules/FindPostgreSQL.cmake:155 (find_package_handle_standard_args)
CMakeLists.txt:7 (find_package)
I added the following lines before calling find_package but it didn't seem to have any effect.
set(PostgreSQL_ADDITIONAL_VERSIONS "9.2.2")
set(PostgreSQL_ADDITIONAL_SEARCH_PATHS ${PostgreSQL_ADDITIONAL_SEARCH_PATHS} "/usr/include/postgresql")
I also tried googling for PostgreSQL_TYPE_INCLUDE_DIR but didn't find anything. What else can I try?
Make sure you've installed both libpq-dev\ and postgresql-server-dev-all (or specific version e.g. postgresql-server-dev-9.4)
$ dpkg --get-selections | grep -e "libpq-dev\|postgresql-server-dev"
in case you're missing some package
apt-get install libpq-dev postgresql-server-dev-all
should fix it.
After a bit more debugging I figured out that it's getting stuck trying to find pg_type.h
This file is located in /usr/include/postgresql/catalog/pg_types.h but the module is expecting to find it in /usr/include/postgresql/server/catalog/pg_types.h
find_path(PostgreSQL_TYPE_INCLUDE_DIR
NAMES catalog/pg_type.h
PATHS
# Look in other places.
${PostgreSQL_ROOT_DIRECTORIES}
PATH_SUFFIXES
pgsql/server
postgresql/server
include/server
# Help the user find it if we cannot.
DOC "The ${PostgreSQL_INCLUDE_DIR_MESSAGE}"
)
It works if I add postgresql to the PATH_SUFFIXES
find_path(PostgreSQL_TYPE_INCLUDE_DIR
NAMES catalog/pg_type.h
PATHS
# Look in other places.
${PostgreSQL_ROOT_DIRECTORIES}
PATH_SUFFIXES
postgresql
pgsql/server
postgresql/server
include/server
# Help the user find it if we cannot.
DOC "The ${PostgreSQL_INCLUDE_DIR_MESSAGE}"
)
On Ubuntu you can also work around that issue by calling cmake with having PostgreSQL_TYPE_INCLUDE_DIR defined like this:
cmake -DPostgreSQL_TYPE_INCLUDE_DIR=/usr/include/postgresql/
See the bug report [1] for this issue and a potential fix [2]. Álso see the discussion about the reasoning behind the move on the debian mailinglist at [3].
On Ubuntu/Debian, starting with PostgreSQL 9.3 the header file pg_type.h
is moved to a separate package (from libpq-dev to postgresql-server-dev)
and consequently the file pg_type.h is moved to a new location
[1] https://gitlab.kitware.com/cmake/cmake/issues/17223
[2] https://gitlab.kitware.com/cmake/cmake/commit/d4fd30d8d8f5b9c4b5a110b4676cad2a19d7c314
[3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=314427
From Linux Mint 17.3 ("Rosa") with PostgreSQL 9.3, I had to adjust ilia choly's solution (interestingly, the suggested postgres entry in the list was already present in the file, but wasn't enough to fix things).
I had to edit /usr/share/cmake-2.8/Modules/FindPostgreSQL.cmake around line 114 and add postgresql/9.3 so that the find_path call looks like
find_path(PostgreSQL_TYPE_INCLUDE_DIR
NAMES catalog/pg_type.h
PATHS
# Look in other places.
${PostgreSQL_ROOT_DIRECTORIES}
PATH_SUFFIXES
postgresql/9.3
postgresql
pgsql/server
postgresql/server
include/server
# Help the user find it if we cannot.
DOC "The ${PostgreSQL_INCLUDE_DIR_MESSAGE}"
)