-
Notifications
You must be signed in to change notification settings - Fork 0
Prototype of a template project generator #8
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The idea looks good!
We need to make it compilable before merging.
|
||
- How to Build - | ||
- cd to 'build' directory | ||
- run the command 'cmake ..' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
in my case it gives error:
mikel@msi:~/repo/antler-proj/templates/mikel/build$ cmake ..
CMake Warning (dev) in CMakeLists.txt:
No project() command is present.
but the same command is in cdt, so I guess the issue should be created in cdt
- cd to 'build' directory | ||
- run the command 'cmake ..' | ||
- run the command 'make' | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In my case cmake
doesn't work, so I would add similar options as in original README.txt in cdt/examples:
-- How to build with cdt-cpp -- | |
- cd into the 'build' directory | |
- run the command 'cdt-cpp -abigen ../src/{{APROJ_PROJECT_NAME}}.cpp -o {{APROJ_PROJECT_NAME}}.wasm -I ../include/' | |
#include <eosio/eosio.hpp> | ||
using namespace eosio; | ||
|
||
CONTRACT {{APROJ_PROJECT_NAME}} : public contract { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think CONTRACT
is an old macro / old way of creating contracts.
The new way is attribute [[eosio::contract]]
.
This PR is basing on cdt-init
which generates old project.
I think it should base on newer example: https://github.com/AntelopeIO/cdt/tree/main/examples/hello
public: | ||
using contract::contract; | ||
|
||
ACTION hi( name nm ); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ACTION hi( name nm ); | |
[[eosio::action]] | |
hi( name nm ); |
@@ -0,0 +1,5 @@ | |||
#include <{{APROJ_PROJECT_NAME}}.hpp> | |||
ACTION {{APROJ_PROJECT_NAME}}::hi( name nm ) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ACTION {{APROJ_PROJECT_NAME}}::hi( name nm ) { | |
[[eosio::action]] | |
{{APROJ_PROJECT_NAME}}::hi( name nm ) { |
- cd to 'build' directory | ||
- run the command 'cmake ..' | ||
- run the command 'make' | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
-- How to build with cdt-cpp -- | |
- cd into the 'build' directory | |
- run the command 'cdt-cpp -abigen ../src/{{APROJ_PROJECT_NAME}}.cpp -o {{APROJ_PROJECT_NAME}}.wasm -I ../include/' | |
}; | ||
|
||
// declaration of a type of a table which will contain our data | ||
using table_t = eosio::multi_index<"my_table"_n, data_t>; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When I try to compile example project abc
generated using this template with command:
cdt-cpp -abigen ../src/abc.cpp -o abc.wasm -I ../include/
I get an error:
mikel@msi:~/repo/antler-proj/templates/abc/build$ cdt-cpp -abigen ../src/abc.cpp -o abc.wasm -I ../include/
In file included from /home/mikel/repo/antler-proj/templates/abc/build/../src/abc.cpp:1:
In file included from /usr/opt/cdt/3.1.0/bin/../include/eosiolib/contracts/eosio/eosio.hpp:6:
In file included from /usr/opt/cdt/3.1.0/bin/../include/eosiolib/contracts/eosio/../../contracts/eosio/action.hpp:10:
/usr/opt/cdt/3.1.0/bin/../include/eosiolib/contracts/eosio/../../core/eosio/name.hpp:324:19: error: constexpr variable 'x' must be initialized by a constant expression
constexpr auto x = eosio::name{std::string_view{eosio::detail::to_const_char_arr<Str...>::value, sizeof...(Str)}};
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/mikel/repo/antler-proj/templates/abc/build/../src/abc.cpp:21:48: note: in instantiation of function template specialization 'operator""_n<char, 'm', 'y', '_', 't', 'a', 'b', 'l', 'e'>' requested here
using table_t = eosio::multi_index<"my_table"_n, data_t>;
^
/usr/opt/cdt/3.1.0/bin/../include/eosiolib/contracts/eosio/../../core/eosio/name.hpp:116:13: note: non-constexpr function 'check' cannot be used in a constant expression
eosio::check( false, "character is not in allowed character set for names" );
^
/usr/opt/cdt/3.1.0/bin/../include/eosiolib/contracts/eosio/../../core/eosio/name.hpp:90:22: note: in call to 'char_to_value(95)'
value |= char_to_value( str[i] );
^
/usr/opt/cdt/3.1.0/bin/../include/eosiolib/contracts/eosio/../../core/eosio/name.hpp:324:23: note: in call to 'name({&value[0], 8})'
constexpr auto x = eosio::name{std::string_view{eosio::detail::to_const_char_arr<Str...>::value, sizeof...(Str)}};
^
/usr/opt/cdt/3.1.0/bin/../include/eosiolib/core/eosio/check.hpp:57:16: note: declared here
inline void check(bool pred, const char* msg) {
^
/home/mikel/repo/antler-proj/templates/abc/build/../src/abc.cpp:21:38: error: non-type template argument is not a constant expression
using table_t = eosio::multi_index<"my_table"_n, data_t>;
^~~~~~~~~~~~
full_project_path = Path(project_path).absolute() / project_name | ||
|
||
if not os.path.isdir(full_template_path): | ||
raise Exception("Can't find template: " + template_name) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
because of warning:
generator.py:15:8: W0719: Raising too general exception: Exception (broad-exception-raised)
raise Exception("Can't find template: " + template_name) | |
raise ValueError("Can't find template: " + template_name) |
Holding off on this PR until this release is completed. |
Includes two simple templates described in the Aproj user's guide to show that the idea works.