Current project: Modified Stargen (a solar system generator)
There should be a file in "CMake Files" named "CMakeOutput.log" which should contain a history of what cmake did.
FWIW, I used the command-line version of cmake, which put the stargen executable in the current default directory. In my case, that was stargen-master/build
Note that stargen actually starts with an lower-case s. Also, under Linux, it might not have any filetype extension at all.
Added after 16 minutes 37 seconds:
I suspect you need to type the make command yourself.
I just now ran cmake-gui on Windows under Cygwin. All it did was create the Makefile for stargen. It did not run make, so it did not build stargen.
FWIW, I used the command-line version of cmake, which put the stargen executable in the current default directory. In my case, that was stargen-master/build
Note that stargen actually starts with an lower-case s. Also, under Linux, it might not have any filetype extension at all.
Added after 16 minutes 37 seconds:
I suspect you need to type the make command yourself.
I just now ran cmake-gui on Windows under Cygwin. All it did was create the Makefile for stargen. It did not run make, so it did not build stargen.
Selden
I keep getting this, regardless of what folder I open in a terminal:
-M-
Added after 1 minute 2 seconds:
Of course, all I have been entering is "cmake"....no clue what to type after that...if anything. The instructions don't really say.
-M-
Code: Select all
make: *** No targets specified and no makefile found. Stop.
-M-
Added after 1 minute 2 seconds:
Of course, all I have been entering is "cmake"....no clue what to type after that...if anything. The instructions don't really say.
-M-
The critical sequence of four words in three commands is deceptively simple:
(Note the space and two dots after the command cmake, which you didn't mention.)
Below are the gory details of the procedure that I followed. I've included a few samples of the output that cmake and make generated along the way. I hope this helps.
1. Restore the stargen zip file to a convenient location on your computer
(perhaps to your default login directory.) It'll create the directory "stargen-master" containing many files and directories.
2. cd to the directory "stargen-master"
3. Use your favorite text editor (I used emacs) to insert into the file "CMakeLists.txt" the line
just ahead of the line
4. Exit from the editor, writing the new version of "CMakeLists.txt"
5. You can use the command "tail" to verify that "CMakeLists.txt" contains what it should:
tail types out lines from the end of a file. Here's what I see:
6. Type the command
That tells bash to move you to the directory named build (i.e. to cause "stargen-master/build" to become your current default directory)
7. Type the command
Note that cmake is followed by a space and two dots. You didn't mention them in what you wrote above. I dunno if you might have omitted them when you typed the command.
Those two dots tell cmake to look in the next superior directory, that is, to follow the instructions that it finds in the file "../CMakeLists.txt" (i.e. in the file "stargen-master/CMakeLists.txt")
to construct the file "Makefile" in the current directory (i.e. it will create the file "stargen-master/build/Makefile")
cmake will type some informative messages as it works.
The path that cmake has written to will be different on your computer, of course, although it should end with "stargen-master/build"
8. When cmake finishes, you can again use the command "tail" to verify that "Makefile" contains what it should:
The typeout should be
9. Type the command
That tells the program make to follow the instructions that it finds in the file "Makefile" which is in the current default directory (i.e. in the directory "stargen-master/build" to create the program stargen, also in the current default directory.
make and the programs that it runs will type some informative messages, including a plenitude of errors and warnings.
Be patient. It takes a while. The output of make should start with something like the following, although here it's showing my directory structure:
followed by many more lines of output. It'll provide a percentage of progress at the start of each line which also contains the phrase "Building CXX object", e.g.
As it finishes, make should type something like this:
although it'll show your directory structure, of course, not mine.
When make finishes, the stargen executable should be present in "stargen-master/build" along with various files that cmake had created.
10. Type the command
You should see something like this
10. Type the command
stargen should respond with
followed by lots more stuff.
Does this help?
Code: Select all
cd build
cmake ..
make
(Note the space and two dots after the command cmake, which you didn't mention.)
Below are the gory details of the procedure that I followed. I've included a few samples of the output that cmake and make generated along the way. I hope this helps.
1. Restore the stargen zip file to a convenient location on your computer
(perhaps to your default login directory.) It'll create the directory "stargen-master" containing many files and directories.
2. cd to the directory "stargen-master"
3. Use your favorite text editor (I used emacs) to insert into the file "CMakeLists.txt" the line
Code: Select all
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive ")
just ahead of the line
Code: Select all
install(TARGETS stargen RUNTIME DESTINATION bin)
4. Exit from the editor, writing the new version of "CMakeLists.txt"
5. You can use the command "tail" to verify that "CMakeLists.txt" contains what it should:
Code: Select all
tail CMakeLists.txt
tail types out lines from the end of a file. Here's what I see:
Code: Select all
$ tail CMakeLists.txt
set(LIBS ${LIBS} ${GSL_LIBRARIES})
add_executable(stargen accrete.cpp andromeda.cpp andromeda2.c display.cpp dole.cpp elements.cpp enviro.cpp gas_radius_helpers.cpp ic3094.cpp ic3094_2.c jimb.cpp main.cpp omega_galaxy.cpp omega_galaxy2.c Planetary_Habitability_Laboratory.cpp planets.cpp radius_tables.cpp ring_universe.cpp ring_universe2.c solid_radius_helpers.cpp solstation.cpp stargen.cpp star_temps.cpp star_trek.cpp structs.cpp utils.cpp)
target_link_libraries(stargen ${LIBS})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive ")
install(TARGETS stargen RUNTIME DESTINATION bin)
install(DIRECTORY html ref DESTINATION bin)
6. Type the command
Code: Select all
cd build
That tells bash to move you to the directory named build (i.e. to cause "stargen-master/build" to become your current default directory)
7. Type the command
Code: Select all
cmake ..
Note that cmake is followed by a space and two dots. You didn't mention them in what you wrote above. I dunno if you might have omitted them when you typed the command.
Those two dots tell cmake to look in the next superior directory, that is, to follow the instructions that it finds in the file "../CMakeLists.txt" (i.e. in the file "stargen-master/CMakeLists.txt")
to construct the file "Makefile" in the current directory (i.e. it will create the file "stargen-master/build/Makefile")
cmake will type some informative messages as it works.
Code: Select all
$ cmake ..
-- The C compiler identification is GNU 9.3.0
-- The CXX compiler identification is GNU 9.3.0
[... lots more stuff...]
-- Configuring done
-- Generating done
-- Build files have been written to: /cygdrive/c/MyPrograms/Planet/StarGen/stargen-master (2014-2020)/stargen-master/build
The path that cmake has written to will be different on your computer, of course, although it should end with "stargen-master/build"
8. When cmake finishes, you can again use the command "tail" to verify that "Makefile" contains what it should:
Code: Select all
tail Makefile
The typeout should be
Code: Select all
$ tail Makefile
#=============================================================================
# Special targets to cleanup operation of make.
# Special rule to run CMake to check the build system integrity.
# No rule that depends on this can have commands that come from listfiles
# because they might be regenerated.
cmake_check_build_system:
$(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
.PHONY : cmake_check_build_system
9. Type the command
Code: Select all
make
That tells the program make to follow the instructions that it finds in the file "Makefile" which is in the current default directory (i.e. in the directory "stargen-master/build" to create the program stargen, also in the current default directory.
make and the programs that it runs will type some informative messages, including a plenitude of errors and warnings.
Be patient. It takes a while. The output of make should start with something like the following, although here it's showing my directory structure:
Code: Select all
make[1]: Entering directory '/cygdrive/c/MyPrograms/Planet/StarGen/stargen-master (2014-2020)/stargen-master/build'
make[2]: Entering directory '/cygdrive/c/MyPrograms/Planet/StarGen/stargen-master (2014-2020)/stargen-master/build'
make[2]: Leaving directory '/cygdrive/c/MyPrograms/Planet/StarGen/stargen-master (2014-2020)/stargen-master/build'
make[2]: Entering directory '/cygdrive/c/MyPrograms/Planet/StarGen/stargen-master (2014-2020)/stargen-master/build'
[ 3%] Building CXX object CMakeFiles/stargen.dir/accrete.cpp.o
In file included from /cygdrive/c/MyPrograms/Planet/StarGen/stargen-master (2014-2020)/stargen-master/accrete.cpp:10:
/cygdrive/c/MyPrograms/Planet/StarGen/stargen-master (2014-2020)/stargen-master/utils.h:283:6: warning: redeclaration of ‘template<class T> bool is_close(T, T, long double)’ may not have default arguments [-fpermissive]
283 | bool is_close(T a, T b, long double percent = 1)
| ^~~~~~~~
followed by many more lines of output. It'll provide a percentage of progress at the start of each line which also contains the phrase "Building CXX object", e.g.
Code: Select all
[ 48%] Building CXX object CMakeFiles/stargen.dir/omega_galaxy.cpp.o
As it finishes, make should type something like this:
Code: Select all
[100%] Linking CXX executable stargen.exe
make[2]: Leaving directory '/cygdrive/c/MyPrograms/Planet/StarGen/stargen-master (2014-2020)/stargen-master/build'
[100%] Built target stargen
make[1]: Leaving directory '/cygdrive/c/MyPrograms/Planet/StarGen/stargen-master (2014-2020)/stargen-master/build'
although it'll show your directory structure, of course, not mine.
When make finishes, the stargen executable should be present in "stargen-master/build" along with various files that cmake had created.
10. Type the command
Code: Select all
ls -l
You should see something like this
Code: Select all
$ ls -l
total 79612
-rw-rw-r--+ 1 selden None 2423 May 31 13:28 cmake_install.cmake
-rw-rw-r--+ 1 selden None 14881 Jun 1 10:12 CMakeCache.txt
drwxrwxr-x+ 1 selden None 0 Jun 1 19:45 CMakeFiles
-rw-rw-r--+ 1 selden None 25845 Jun 1 10:33 Makefile
-rwxrwxr-x+ 1 selden None 81465783 Jun 1 19:45 stargen.exe
10. Type the command
Code: Select all
./stargen -?
stargen should respond with
Code: Select all
Usage: stargen [options] [system name]
Options:
Seed values:
-s# Set random number seed [default: from time]
-i# Number to increment each random seed [default: 1]
-n# Specify number of systems [default: 1]
-A# set accretion dust density ratio_arg to # [default: 0.0]
-q# set accretion inner dust border to # [default: 0.3]
-Q# set accretion planetesimal seed eccentricity coefficient to # [default: 0.077]
followed by lots more stuff.
Does this help?
Selden
It was very helpful. Initially hit a glitch; the build failed. I look back at older posts in this thread and found someone who had a similar issue, so I downloaded the library necessary, tried again, and the build is done! Many thanks! Now I just have to get syntax correct on this thing...
Glad to see you're still around, Selden!
-M-
Added after 55 minutes 53 seconds:
....all I'm getting is
when I type (for example)
And I also tried the "add in a fake secondary in a really far orbit" tactic...got the same response...
-M-
Glad to see you're still around, Selden!
-M-
Added after 55 minutes 53 seconds:
....all I'm getting is
Code: Select all
Segmentation fault (core dumped)
when I type (for example)
Code: Select all
stargen -m.89 -BG4V
And I also tried the "add in a fake secondary in a really far orbit" tactic...got the same response...
-M-
Two possibilities I can think of:
1.You might not be running the copy of stargen that you think you're running, since your stargen command does not specify where stargen is located.
2. stargen might be having problems writing its output file.
See below for details.
========
1.
Did you copy stargen to a directory which is included in your PATH or might you have an older version there? The PATH environment variable defines the list of directories which are searched automatically for programs when you don't explicitly specify a program's location. You can explicitly add "current default directory" (./) to your PATH, but doing so is a very bad practice. Strange things will happen if there is a program in your current directory which has the same name as a system program, including Malware.
If the directory where stargen is located is not in your PATH, then you must explicitly specify its directory. If stargen is located in your current default directory, then you must specify the ./ prefix (i.e. tell bash that it's located in your current default directory). For example:
This (./) command works fine for me to run Omega13'a's version of stargen.
On my computer, I have my own version of stargen in /usr/local/bin, which is in my PATH. My version of stargen doesn't recognize the -BG4V qualifier, although it complains and doesn't crash.
****************
Edited to add:
You can type the command
to find out what program is actually being run when you type the command "stargen" without the ./ prefix
****************
========
2.
I'm wondering if stargen is having problems writing its output file on your computer.
Check to make sure the sub-directory "html" exists in your current default directory and that you can create files in it.
Since the command above does not explicitly specify where to put stargen's output, stargen also requires that there be a directory named "html" (without the quotes) within the current default directory. That's where stargen will try to write its output file(s). Under Widows, stargen doesn't complain when no such directory exists, but it doesn't create an output file, either. Perhaps stargen's Linux I/O code doesn't handle I/O problems correctly.
1.You might not be running the copy of stargen that you think you're running, since your stargen command does not specify where stargen is located.
2. stargen might be having problems writing its output file.
See below for details.
========
1.
Did you copy stargen to a directory which is included in your PATH or might you have an older version there? The PATH environment variable defines the list of directories which are searched automatically for programs when you don't explicitly specify a program's location. You can explicitly add "current default directory" (./) to your PATH, but doing so is a very bad practice. Strange things will happen if there is a program in your current directory which has the same name as a system program, including Malware.
If the directory where stargen is located is not in your PATH, then you must explicitly specify its directory. If stargen is located in your current default directory, then you must specify the ./ prefix (i.e. tell bash that it's located in your current default directory). For example:
Code: Select all
./stargen -m.89 -BG4V
This (./) command works fine for me to run Omega13'a's version of stargen.
On my computer, I have my own version of stargen in /usr/local/bin, which is in my PATH. My version of stargen doesn't recognize the -BG4V qualifier, although it complains and doesn't crash.
****************
Edited to add:
You can type the command
Code: Select all
which stargen
to find out what program is actually being run when you type the command "stargen" without the ./ prefix
****************
========
2.
I'm wondering if stargen is having problems writing its output file on your computer.
Check to make sure the sub-directory "html" exists in your current default directory and that you can create files in it.
Since the command above does not explicitly specify where to put stargen's output, stargen also requires that there be a directory named "html" (without the quotes) within the current default directory. That's where stargen will try to write its output file(s). Under Widows, stargen doesn't complain when no such directory exists, but it doesn't create an output file, either. Perhaps stargen's Linux I/O code doesn't handle I/O problems correctly.
Selden
I have read that Omega's version is [u]very[u] particular about how commands are entered. For example, if I enter this (after cd to appropriate directory):
I get:
Type this:
I get this:
HOWEVER, I typed this (not paying attention):
and it created a .csv file in the html folder for the star.
Maybe I'm not specifying my output?
-M-
Code: Select all
~/New Programs/stargen-master/build$ ./stargen -m1.04
I get:
Code: Select all
Unsupported star type: ????V
Type this:
Code: Select all
./stargen -m1.04 -BG1V
I get this:
Code: Select all
Segmentation fault (core dumped)
HOWEVER, I typed this (not paying attention):
Code: Select all
./stargen -m1.04 -G1V
and it created a .csv file in the html folder for the star.
Maybe I'm not specifying my output?
-M-
I dunno if the errors would be affected by providing an output file spec, but you probably should give that a try instead of just going with the defaults. Certainly something is causing confusion, though, since the default output is supposed to be html, not csv. See below.
The output file formats are listed near the end of stargen's on-screen output when you specify
where it says
The output file formats are listed near the end of stargen's on-screen output when you specify
Code: Select all
./stargen -?
where it says
Code: Select all
Output formats: (only one is generated)
(default) HTML to file
-c Celestia .ssc to stdout
-C Excel .csv [dl: no thumbnail html] to file
-e Excel .csv to file
-S Vector graphics (SVG) to file
-t Text to stdout
-sn# Number of decimal places for numbers
Selden
- PlutonianEmpire
- Posts: 1374
- Joined: 09.09.2004
- Age: 40
- With us: 20 years 2 months
- Location: MinneSNOWta
- Contact: