6

wabt-sys compile: error: CMAKE_PROJECT_VERSION was not declared in this scope on...

 2 years ago
source link: https://ma.ttias.be/wabt-sys-compile-error-cmake-project-version-not-declared-in-scope-ubuntu-18-04/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

wabt-sys compile: error: CMAKE_PROJECT_VERSION was not declared in this scope on Ubuntu 18.04 LTS

Mattias Geniar, November 23, 2020

Follow me on Twitter as @mattiasgeniar

When trying to compile WebAssembly (wabt-rs) for a dependent package, it failed on Ubuntu 18.04 LTS due to this error message.

wabt-sys-0.8.0/wabt/src/option-parser.cc: In lambda function:
wabt-sys-0.8.0/wabt/src/option-parser.cc:60:20:
    error: ‘CMAKE_PROJECT_VERSION’ was not declared in this scope
    printf("%s\n", CMAKE_PROJECT_VERSION);
                    ^~~~~~~~~~~~~~~~~~~~~
make[2]: *** [CMakeFiles/wabt.dir/src/option-parser.cc.o] Error 1
make[1]: *** [CMakeFiles/wabt.dir/all] Error 2
make: *** [all] Error 2
thread 'main' panicked at '
command did not execute successfully, got: exit code: 2

The error appears to come from the fact that CMAKE_PROJECT_VERSION isn’t defined in the source headers of the compilation. The problem is caused by the cmake version on the system:

$ cmake --version
cmake version 3.10.2

CMake suite maintained and supported by Kitware (kitware.com/cmake).

That version (or any version below v3.12.0) generates a header file that looks like this:

/* #undef CMAKE_PROJECT_VERSION */

Whereas the project that’s compiling, expects it look like this:

#define CMAKE_PROJECT_VERSION "1.0.13"

One solution would be to upgrade cmake to a later version, but depending on your distribution that may not be very convenient (due to dependencies etc.).

In my case, I manually added the header file. The error occurred on line /root/.cargo/registry/src/github.com-1ecc6299db9ec823/wabt-sys-0.8.0/wabt/src/option-parser.cc according to my error message, so I modified that file and added the definition to the very top.

$ more /root/.cargo/registry/src/github.com-1ecc6299db9ec823/wabt-sys-0.8.0/wabt/src/option-parser.cc
/*
 * Copyright 2016 WebAssembly Community Group participants
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#define CMAKE_PROJECT_VERSION "1.0.13"

#include "src/option-parser.h"

I added that #define CMAKE_PROJECT_VERSION "1.0.13" line, just above the first include statement.

After that, I re-ran the compile and it went through without a problem.


Want to subscribe to the cron.weekly newsletter?

I write a weekly-ish newsletter on Linux, open source & webdevelopment called cron.weekly.

It features the latest news, guides & tutorials and new open source projects. You can sign up via email below.

No spam. Just some good, practical Linux & open source content.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK