[
https://issues.apache.org/jira/browse/LOGCXX-510?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17182702#comment-17182702
]
Thorsten Schöning commented on LOGCXX-510:
------------------------------------------
I had another look at building APR etc. using CMAKE and am running into trouble
when building APR-Util. It seems that VS wants to build a DLL, tries to link
APR and fails. The following is what VS does:
{quote}
cmd.exe /C "cd . && "C:\Program Files (x86)\Microsoft Visual
Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe"
-E vs_link_dll --intdir=CMakeFiles\libaprutil-1.dir
--rc=C:\PROGRA~2\WI3CF2~1\10\bin\100183~1.0\x64\rc.exe
--mt=C:\PROGRA~2\WI3CF2~1\10\bin\100183~1.0\x64\mt.exe --manifests --
C:\PROGRA~2\MICROS~4\2019\COMMUN~1\VC\Tools\MSVC\1427~1.291\bin\Hostx64\x64\link.exe
/nologo CMakeFiles\libaprutil-1.dir\buckets\apr_brigade.c.obj
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets.c.obj
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_alloc.c.obj
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_eos.c.obj
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_file.c.obj
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_flush.c.obj
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_heap.c.obj
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_mmap.c.obj
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_pipe.c.obj
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_pool.c.obj
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_refcount.c.obj
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_simple.c.obj
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_socket.c.obj
CMakeFiles\libaprutil-1.dir\crypto\apr_crypto.c.obj
CMakeFiles\libaprutil-1.dir\crypto\apr_md4.c.obj
CMakeFiles\libaprutil-1.dir\crypto\apr_md5.c.obj
CMakeFiles\libaprutil-1.dir\crypto\apr_passwd.c.obj
CMakeFiles\libaprutil-1.dir\crypto\apr_sha1.c.obj
CMakeFiles\libaprutil-1.dir\crypto\apr_siphash.c.obj
CMakeFiles\libaprutil-1.dir\crypto\crypt_blowfish.c.obj
CMakeFiles\libaprutil-1.dir\crypto\getuuid.c.obj
CMakeFiles\libaprutil-1.dir\crypto\uuid.c.obj
CMakeFiles\libaprutil-1.dir\dbd\apr_dbd.c.obj
CMakeFiles\libaprutil-1.dir\dbm\apr_dbm.c.obj
CMakeFiles\libaprutil-1.dir\dbm\apr_dbm_sdbm.c.obj
CMakeFiles\libaprutil-1.dir\dbm\sdbm\sdbm.c.obj
CMakeFiles\libaprutil-1.dir\dbm\sdbm\sdbm_hash.c.obj
CMakeFiles\libaprutil-1.dir\dbm\sdbm\sdbm_lock.c.obj
CMakeFiles\libaprutil-1.dir\dbm\sdbm\sdbm_pair.c.obj
CMakeFiles\libaprutil-1.dir\encoding\apr_base64.c.obj
CMakeFiles\libaprutil-1.dir\hooks\apr_hooks.c.obj
CMakeFiles\libaprutil-1.dir\memcache\apr_memcache.c.obj
CMakeFiles\libaprutil-1.dir\misc\apr_date.c.obj
CMakeFiles\libaprutil-1.dir\misc\apr_queue.c.obj
CMakeFiles\libaprutil-1.dir\misc\apr_reslist.c.obj
CMakeFiles\libaprutil-1.dir\misc\apr_rmm.c.obj
CMakeFiles\libaprutil-1.dir\misc\apr_thread_pool.c.obj
CMakeFiles\libaprutil-1.dir\misc\apu_dso.c.obj
CMakeFiles\libaprutil-1.dir\misc\apu_version.c.obj
CMakeFiles\libaprutil-1.dir\redis\apr_redis.c.obj
CMakeFiles\libaprutil-1.dir\strmatch\apr_strmatch.c.obj
CMakeFiles\libaprutil-1.dir\uri\apr_uri.c.obj
CMakeFiles\libaprutil-1.dir\xlate\xlate.c.obj
CMakeFiles\libaprutil-1.dir\xml\apr_xml.c.obj
CMakeFiles\libaprutil-1.dir\ldap\apr_ldap_stub.c.obj
CMakeFiles\libaprutil-1.dir\ldap\apr_ldap_url.c.obj
CMakeFiles\libaprutil-1.dir\libaprutil.rc.res /out:libaprutil-1.dll
/implib:libaprutil-1.lib /pdb:libaprutil-1.pdb /dll /version:0.0 /machine:x64
/debug /INCREMENTAL kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib
ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cd ."
{quote}
That line contains "/out:libaprutil-1.dll", so it seems to try to create a DLL.
When doing the same for APR, things succeed and the expected files are created:
{quote}
-- Up-to-date:
C:/Users/tschoening/Documents/Svn/Src/Libs/trunk/C/X-OS/APR/apr/1.7.0/src/out/install/x64-Debug/lib/libapr-1.lib
-- Up-to-date:
C:/Users/tschoening/Documents/Svn/Src/Libs/trunk/C/X-OS/APR/apr/1.7.0/src/out/install/x64-Debug/bin/libapr-1.dll
{quote}
Anyway, linking APR-Util fails with errors like the following, where
"apr_vformatter" should be contained in APR:
{quote}
C:\Users\tschoening\Documents\Svn\Src\Libs\trunk\C\X-OS\APR\apr-util\1.6.1\src\apr_brigade.c.obj
: error LNK2019: Verweis auf nicht aufgelöstes externes Symbol
"apr_vformatter" in Funktion "apr_brigade_vprintf".
{quote}
The following is the command line created for the linker and what I'm wondering
is why it doesn't contain any reference to APR or EXPAT. I'm somewhat sure,
though, to have configured the correct output directories of both for APR-Util,
because otherwise APR-Util simply couldn't build. Using ProcMon, I can even see
successful attempts to access the directory I configured for APR_INCLUDE_DIR,
while I don't see any attempts to use a pretty similar configured APR_LIBRARIES.
{quote}
LINK Pass 1: command
"C:\PROGRA~2\MICROS~4\2019\COMMUN~1\VC\Tools\MSVC\1427~1.291\bin\Hostx64\x64\link.exe
/nologo CMakeFiles\libaprutil-1.dir\buckets\apr_brigade.c.obj
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets.c.obj
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_alloc.c.obj
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_eos.c.obj
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_file.c.obj
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_flush.c.obj
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_heap.c.obj
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_mmap.c.obj
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_pipe.c.obj
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_pool.c.obj
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_refcount.c.obj
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_simple.c.obj
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_socket.c.obj
CMakeFiles\libaprutil-1.dir\crypto\apr_crypto.c.obj
CMakeFiles\libaprutil-1.dir\crypto\apr_md4.c.obj
CMakeFiles\libaprutil-1.dir\crypto\apr_md5.c.obj
CMakeFiles\libaprutil-1.dir\crypto\apr_passwd.c.obj
CMakeFiles\libaprutil-1.dir\crypto\apr_sha1.c.obj
CMakeFiles\libaprutil-1.dir\crypto\apr_siphash.c.obj
CMakeFiles\libaprutil-1.dir\crypto\crypt_blowfish.c.obj
CMakeFiles\libaprutil-1.dir\crypto\getuuid.c.obj
CMakeFiles\libaprutil-1.dir\crypto\uuid.c.obj
CMakeFiles\libaprutil-1.dir\dbd\apr_dbd.c.obj
CMakeFiles\libaprutil-1.dir\dbm\apr_dbm.c.obj
CMakeFiles\libaprutil-1.dir\dbm\apr_dbm_sdbm.c.obj
CMakeFiles\libaprutil-1.dir\dbm\sdbm\sdbm.c.obj
CMakeFiles\libaprutil-1.dir\dbm\sdbm\sdbm_hash.c.obj
CMakeFiles\libaprutil-1.dir\dbm\sdbm\sdbm_lock.c.obj
CMakeFiles\libaprutil-1.dir\dbm\sdbm\sdbm_pair.c.obj
CMakeFiles\libaprutil-1.dir\encoding\apr_base64.c.obj
CMakeFiles\libaprutil-1.dir\hooks\apr_hooks.c.obj
CMakeFiles\libaprutil-1.dir\memcache\apr_memcache.c.obj
CMakeFiles\libaprutil-1.dir\misc\apr_date.c.obj
CMakeFiles\libaprutil-1.dir\misc\apr_queue.c.obj
CMakeFiles\libaprutil-1.dir\misc\apr_reslist.c.obj
CMakeFiles\libaprutil-1.dir\misc\apr_rmm.c.obj
CMakeFiles\libaprutil-1.dir\misc\apr_thread_pool.c.obj
CMakeFiles\libaprutil-1.dir\misc\apu_dso.c.obj
CMakeFiles\libaprutil-1.dir\misc\apu_version.c.obj
CMakeFiles\libaprutil-1.dir\redis\apr_redis.c.obj
CMakeFiles\libaprutil-1.dir\strmatch\apr_strmatch.c.obj
CMakeFiles\libaprutil-1.dir\uri\apr_uri.c.obj
CMakeFiles\libaprutil-1.dir\xlate\xlate.c.obj
CMakeFiles\libaprutil-1.dir\xml\apr_xml.c.obj
CMakeFiles\libaprutil-1.dir\ldap\apr_ldap_stub.c.obj
CMakeFiles\libaprutil-1.dir\ldap\apr_ldap_url.c.obj
CMakeFiles\libaprutil-1.dir\libaprutil.rc.res /out:libaprutil-1.dll
/implib:libaprutil-1.lib /pdb:libaprutil-1.pdb /dll /version:0.0 /machine:x64
/debug /INCREMENTAL kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib
ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST
/MANIFESTFILE:CMakeFiles\libaprutil-1.dir/intermediate.manifest
CMakeFiles\libaprutil-1.dir/manifest.res" failed (exit code 1120) with the
following output:
Bibliothek "libaprutil-1.lib" und Objekt "libaprutil-1.exp" werden
erstellt.
{quote}
Need to debug this further...
> Build problems using CMAKE and Visual Studio 2019 Community
> -----------------------------------------------------------
>
> Key: LOGCXX-510
> URL: https://issues.apache.org/jira/browse/LOGCXX-510
> Project: Log4cxx
> Issue Type: Bug
> Components: Build
> Affects Versions: 0.11.0
> Reporter: Thorsten Schöning
> Assignee: Thorsten Schöning
> Priority: Major
> Attachments: CMP00079.png, missing_log4cxx_rc.png,
> set_target_properties.png
>
>
> I just tested building log4cxx using CMAKE and Visual Studio 2019 Community.
> Things failed and I want to use this bug to document everything that I've
> found, because for some things I'm not sure how to handle them properly. Will
> create a new branch to maintain the fixes I came along, so that those can at
> best be later reviewed by others. The branch of interest is currently named
> "logcxx_510_cmake_vs2019_compat".
--
This message was sent by Atlassian Jira
(v8.3.4#803005)