training
training copied to clipboard
[Error] Exercise : Consume Hello Package - not enough instruction on how to modify files
The commented instructions are very vague.
eg
# modify conanfile.txt to account for new dependency
Had to relisten since the only guidance here is in voice, and says to use the existing format as a guide, which gives us:
[requires]
boost/1.72.0
poco/1.9.4
hello/0.1
The next step is also obscure:
# modify CMakeLists.txt to account for new CONAN_PKG::hello
Which I assume refers to:
target_link_libraries(timer CONAN_PKG::poco
CONAN_PKG::boost
CONAN_PKG::hello)
Finally:
# modify timer.cpp to include "hello.h" and call the hello() function
The other includes have a path, but nothing is explained here, so this could be wrong:
#include <hello.h>
But I assume calling hello()
anywhere in main()
is fine.
int main(int argc, char** argv){
...
hello();
...
return 0;
}
Result:
$ conan install ..
Configuration:
[settings]
arch=x86_64
arch_build=x86_64
build_type=Release
compiler=gcc
compiler.libcxx=libstdc++11
compiler.version=7
os=Linux
os_build=Linux
[options]
[build_requires]
[env]
hello/0.1: Not found in local cache, looking in remotes...
hello/0.1: Trying with 'conan-center'...
ERROR: Unable to find 'hello/0.1' in remotes
This looks like its failing from the first step, not the second or third (although it's not clear if they will work).
Looks like we're supposed to know that hello needs the @user/channel specified and be:
hello/0.1@user/testing
This is not clear, especially when looking at boost and poco as our only examples. It's only referenced on the first slide of this video.
I had the same confusion. Following from the previous lessons I assumed that the steps would be:
- Open
conanfile.txt
and add the linehello/<versionstring>
under the[requires]
heading, - Open
CMakeLists.txt
and addCONAN_PKG::hello
totarget_link_libraries
, (goes as expected) - add
#include <hello/hello.h>
to timer.cpp, in line with the other includes, and callhello()
somewhere inmain()
.
I got it to work by including appending the @user/channel info to conanfile.txt, and simply including hello.h rather than hello/hello.h.
Now, I would like to know what I have to do to get it to follow the convention of the other includes and have the header be included from a "hello" directory.
Please listen carefully to the user/channel slide in the "Create package from Github source" and explanations in the video to learn about it, and also the slide with conan search hello/0.1@user/channel
that will not work without using the right user/channel.
So the user/channel part should be enough covered by previous exercises.
The hello.h
vs hello/hello.h
, yes, maybe it makes sense to add some hint or clarification about it. The thing is that there is no universal convention, and packages from open source libraries might do a thing, and your own packages do a different thing. But yes, lets try in the next training videos to improve this.